Internet Sitesi Kuracaklara Tavsiyeler

Konu içerisindeki geçişine göre 7 gün,24 saat olduğu oldukça açık.Bunu anlamayanlardan da web sayfası kurmalarını bekleyemeyiz.
 
PHP'de güvenlik sorunu çok büyük.En basit olarak herhangi bir portu açık unutmak.O zaman ben buradayım,saldırın diyorsun resmen.

Web Programlarını tasarlarken çoğumuzun ihmal ettiği bir konu vardır. Güvenlik .Peki nasıl sağlarız bu güvenliği. İlk önce işe HTML Form'larından başlamalıyız. Bir çok sitedeki güvenlik açığını bu formlar oluşturur.Örneğin "<" işaretiyle başlayıp ">" işaretiyle biten bir değişken başınızı bir hayli ağrıtabilir.Veya MySql'e "select * from tablo where alan=$numara" tipi bir sorgu gönderiyorsanız,"alan" integer tipteyse "$numara" değişkeninin string tipte olması ekrana kocaman bir "MySql Error" yazısının gelmesine sebeb olabilir.Peki bunlarla nasıl başa çıkabiliriz.Tabiki sihirli karakterleri yasaklayarak. Bunun için birçok yöntem vardır(Ben 2'sini biliyorum).
1 - İstemci tarafından malum karakterleri yasaklamak.
2 - Sunucu tarafından malum karakterleri yasaklamak.


1-Bu işi Java Script ile yapabiliriz(Ekte Kullanımı Mevcut).Bunun bir tek eksi yönü vardır.Bildiğiniz gibi JavaScript İstemci tarafında çalıştırıldığı için kötü niyetli arkadaşımız HTML Kodunu HDD'ye kaydedip salt form yapabilir.O yüzden bu yöntem pek sağlıklı sayılmaz.Ama herşeyin çözümü olduğu gibi bununda bir çözümü vardır.İstemci bilgisayarın Sunucu bilgisayara gönderdiği bazı bilgilerden yararlanmak.Bu bilgilerin arasında İstemcinin kullandığı Browser,karakter seti('iso-8859-1',vs…) gibi istatistikçilerin işine yarayacak bilgilerin arasında birde HTTP_REFERER isminde önceden tanımlanmış bir değişken vardır.Bu değişken ziyaretçinin girdiği en son sayfayı referans alıp işler.Yani ali.php'ye veli.htm'deki formdan ulaşıyorsanız ali.php'nin HTTP_REFERER değişkeni veli.htm olur(Örneği ekteki zip dosyasından deneyebilirsiniz).O zaman ali.php'ye göndereceğimiz bilgilerin "www.alanadim.com/veli.htm"'den gelip gelmediğini kontrol ettirerek JavaScript'timizi koruşmuş oluruz.

2-Bu işi PHP'ye yaptırmak.Bunu yapabilmek için karakter fonksiyonlarına bir bakmamız gerekir.Benim kullandığım strspn() fonksiyonu işe yarıyor.Bu fonksiyonun asıl işlevi verdiğimiz bir kelimenin içinde vermiş olduğumuz diğer karakterlerin kaç tane olduğunu bulmak.Eğer hiç yoksa 0 sonucunu döndürür. Kullanılışı strspn("Aranacak Kelime", "aranacak harfler"). Örneği benim formumda sadece rakamların girilmesini istiyorum.

if (strspn ($numara, "<>abcdefgğhıijklmnoöprsştuüvyz!^+%&/()=?_-#$")<>0)
{
$hatano=(string)strspn ($numara, "<>abcdefgğhıijklmnoöprsştuüvyz!^+%&/()=?_-#$");
echo "<center><h1>

Yasaklanmış ".$hatano." Adet Farklı Karakter Girmişsiniz
";
echo "Yasaklanan Karakterler için Aşağıdaki Kutucuğa Bakınız

<table border=1><tr><td><>abcdefgğhıijklmnoöprsştuüvyz!^+%&/()=?_-#$</td></tr></table></center>";
exit;
}


Bir başka konu ise string'leri şifrelemektir.PHP bize şifreleme konusunda crypt() isminde bir fonksiyon sunar.Bu fonksiyonla kendi belirleyeceğimiz bir anahtar kelime ile şifreleme sağlanır. Kullanımı:

crypt("Şifreyeleyeğimiz Kelime","Anahtar Kelime")

Örneği bu anahtar kelime olarak 'BaRiS' yazarsak,şifrelenecek kelime olarak mutasyon.net yazarsak.mutasyon.net 'BaPV33lj7VdeU' oluverir.Bunun çok kötü bir tarafı var.Bu şekilde oluşturduğunuz şifrelerin geri çevirilememesidir.Ama kelime ve anahatar kelime aynı olduğu sürece sonuçta aynı kalır.Bunu nerde kullanabilirsiniz?Mesela Parolaları veritabanına crypt ederek kaydedin.Parolayı ne siz anlayabilirsiniz nede bir başkası.Ama kullanıcı oturum açarken girdiği Parolayı crypt ederek kontrol ederseniz işinize yarar.

Başka şifreleme yöntemleride vardır.Mesela PGP(Pretty Good Privacy,E-Postaları şifrelemek için kullanılır)'nin GNU Lisansı(Açık Kaynak Kodlu) altında dağıtılan sürümü olan GPG(Gnu Privacy Guard,www.gnupg.com)'yi veya ftp://argeas.cs-net.gr/pub/unix/mcrypt/ adresinden indirebiliceğiniz Mcrypt kullanabilirsiniz.Mcrypt okuyabildiğim kadarıyla(Doküman İngilizce'ydi kusura bakmayın artık.ama ingilizcesi iyi olanlar için PHP Manual gerçekten mükemmel.PDG Hazırlıyor) Standart Olarak BlowFish ayriyeten Des,TripleDes, 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 ve Gost içinde CBC, OFB, CFB ,ECB şifreleme algoritmalarını kullanabiliyor.Anlayacağınız 128 bitlik şifrelemeye bile izin veren güzel bir kütüphane.Ayrıca Mhash( http://mhash.sourceforge.net ) gibi çeşitli PHP şifreleme eklendilerinide kurup deneyebilirsiniz.
 
eXpert demiş ki:
PHP:Basit ve eğlenceli
HTML:Basit
ASP:Orta zorlukta ve hiç te zevkli değil
DHTML:Basit ve çok zevkli

Benim tavsiye edeceğim PHP ama güvenlik bakımından çok dikkatli olmak gerekir.

abi ne dedin yaws

asp kadar insana yakın dil varmı ya

komutlara bak

ingilizce bilmek yeterli
 
Öyle ama yine de PHPye göre zor bir dil ve yine PHP veya HTML'ye göre çok zevksiz.HTML'de İngilizce üzerine kurulu bir dil.Bazı yerlerde de kısaltmalar var...
 
morvepipisi demiş ki:
abi ne dedin yaws

asp kadar insana yakın dil varmı ya

komutlara bak

ingilizce bilmek yeterli

asp bizden uzak şeytana yakın olsun...
eXpert'e katılıyorum PHP konusunda; beni hiç üzmedi bugüne kadar,
Micros*ft "teknoloji"lerinden ne kadar uzaklaşırsak o kadar mutlu olucaz gibi geliyor bana....
 
Microsoft konusunda bir bakıma haklısın.İşletim sistemi olarak Linux (Fedora Core 3.0) kurdum ve gerçekten harika.Microsoft'u desteklediğim tek olay donanım.Notebook için kullandığım mouse.Donanım açısından Microsoft'a laf yok ama ne güvenlik,ne de yazılım olarak hiç te cazip değil.
 
Ben de Debian GNU/Linux kullanıyorum. 2.4.2 kernel, KDE 3.3 kullanıyorum ama kalbimde GNOME var.

Hardware detection konusunda çok ilerleme oldu. Mesela Knoppix gibi live CD'ler neredeyse herşeyi tanıyıp otomatik konfigüre ediyorlar.

Bu arada konudan kopmamak için bir ekleme yapayım: GNU/Linux üzrinde web geliştirme programı olarak Bluefish ve Quanta'yı öneririm. Ben sorunsuz kullanıyorum. Grafikler için de GIMP ile harikalar yaratabilirsiniz. Eğer Apache, PHP ve PostgreSQL kurulu bir sistemde çalışıyorsanız tüm projeyi local olarak tamamlayıp upload edebilirsiniz.
 
Linux,en son 1991'de aldığı lisansı yenileyecekmiş.Bunun için lisans almadan önce son bir sürüm daha çıkaracakmış.Bunda Quanta ve GIMP,gerçekten çok gelişmiş olacakmış.GIMP'ı kullanabilen,Windows'ta Photoshop ustası olur ama grafiklerde aslında Macromedia Flash ta çok kaliteli.Mesela http://www.thediyv.com da grafik,flash ile yapılmış.
 
eXpert: Linux 1991'de ne lisansı almış? Şimdi yenilemesi niye gerekiyor? Son bir sürüm ne demek? Linux çekirdeğini mi kastediyorsun tam anlamadım ama ne GIMP ne de Quanta'nın çekirdek revisyonu ile doğrudan alakaları yok bildiğim kadarıyla.

Kusura bakma abi, soru silsilesi gibi oldu... affola...

Konuyu dağılmaktan son bir ekleme ile kurtaralım, şirketlerin okulların yada resmi kurumların web sitelerinde Flash olmasına karşıyım ben... Ciddi bir içeriği geniş bir kitleye sunmak istiyorsanız, uzak durun böyle şeylerden... Ama şunu da eklemek isterim, genelde, bir şirkete felan web sitesi yaparken, sizden "şöyle yanar döner bişey olsun, her tarafı oynasın, ses çıksın" felan gibi saçma şeyler isterler. Yapmayalım, yakışmaz deyince de sen bilmiyosun demek ki demeye getirirler. Al sana fılaş Allah da belanı versin diyerek saçma sapan şeyleri koyarsınız siteye.... Sitenin anasayfasının yüklenmesi için gereken zaman birden iki katı artar... Mozilla, Konqueror, Firefox felan plug in yükle abi diye ağlar... offf... off... makromedya, allahından bul...
 
-Linux,en son lisansını 1991 yılında almış.Yani içeriğinde barındırdığı uygulamalar falan.Bu nedenle Microsoft ile mahkemelik.Microsoft,onların programlarının çalındığını düşünüyor ve Linux bundan kurtulmak istiyor artık.Yenilenmesi gerekmiyor,sadece bu tür mahkemelerden kurtulmak için.
-Son bir sürüm,lisans alınmadan,programların ve içeriğin son bir kez düzenlemek.Tekrar tekrar bu zahmete girmek yerine...
-GIMP:photoshop'un Linux versiyonu ve Quanta:Web tasarım programı.

Bunlar da yenileme sırasında elden geçecek programlar arasında yani genişletilecek ve geliştirilecek.

Flash'a ben şu şekilde karşıyım,herkesde flash player olmayabilir.Hatta ben Linux'a yükleyemedim mesela.Failed oldu sürekli.Bu nedenle flash,biraz hakaret gibi.Çok merak ediyorsan,öğrenmek için uğraş biraz demenin dolaylı yolu..
 
Abi benim bildiğim bir SCO davası var, copyrighted kodlarımızı aşırdınız diye... (Bu arada böyle şirketlerin tavırları "lisanslı yazılım, korsana hayır" diye bağırıp duran arkadaşları biraz kendilerine getirir umarım)

Ayrıca, GIMP'e Photoshop'un Linux versiyonu demek ne kadar doğru bilmiyorum. Ben her iki programıda kullanıyorum, her ikisini de severim (GIMP'in yeri başka tabii) ama çok farklılar, Mesela GIMP'te kitap kapağı poster vs. yapmak ölüm olabilir. Zaten CMYK çalışamazsın, RGB çalışıp, Scribus'a geçicen de sonra renk ayrımına hazır bir pdf yapıcan... Ayrıca AMD Atlon 2800'de bile 2000x3000 felan bi GIMP projesi açınca kağnıya dönüyor... Ama web grafiği, fotomanuplasyon felan gayet iyi... Photoshop ile çok ciddi mantık farkları var... Web sitesi yapmak isteyen arkadaşlara GIMP'i öneririm...

Firefox'a Flash yüklemek için Macromedia'nin sitesine git bence... Firefox plug-in'i otomatik yüklüyorum iddasında ama yüklemiyor. Ben indirdirip kurdum, sorunsuz çalışıyor.
 
Yükledim,olmadı.Linux için olanı bulup yükledim,yine olmadı.Zaten aynı zamanda başka işletim sistemi de yüklü.
GIMP'e Photoshop'un Linux versiyonu demek ne kadar doğru bilmiyorum
Hayır,amacı aynı olduğu için böyle bir söylemde bulundum,yanlış anlaşılmasın.
 
eXpert; Fedora'ya geçtiğine sevindim ;) Gimp için Photoshop benzetmesi yapılmasını ben de sindiremem genelde ama Photoshop alışkınları için Gimp kullan çok benziyor diye diye öyle kaldı :) Gimp bir eklentisi ile Photoshop'u benim için çoktan geride bıraktı, vektörel de çalışabiliyoruz artık. Ayrıca Firefox'u da bıraktım ben Opera'da herşey kendiliğinden yükleniyor. Çok rahat, en güvenli...

İnternet sitelerinde saçma sapan flash menüler, hop hop zıplayan toplar çiçeklere oldum olası karşıyım. Bir de menülerde drop down yapılır, yok hava durumu scripti konur ama siteyi yapan insan evladı Explorer dışında bir browserdan bakmayı akıl etmez. Siteyi yapan kişi tüm browserların desteklediği sayfanın anyaya konyaya kaymadığı biçimde düzenlemeli. Bundan 4 yıl önce olsaydı bu kadar önemli bir sorun değildi ancak artık Internet Explorer standart falan değildir.

Php konusunda hakim olduktan sonra en ufak bir problem yaşamazsınız. Ama çok iyi öğrenmeli özellikle de güvenlikle ilgili en ufak ayrıntıyı bile kaçırmamak gerekli. Slackware serverda şıkır şıkır yazılmış Php ballı kaymak gibidir ;)
 
Sevgili eXpert; görüntülü PHP dersleri başlığıyla verdiğin dersler PHP Nuke, PhpMyAdmin vs. dersleri galiba... Galiba diyorum zira, indirdiğim rar dosyanın içinden bir executable çıktı. Çalıştırmadım ben de...

PHP Nuke öğrenmek demek, PHP öğrenmek demek değildir. PHP "interpreter", uygun sözdiziminde yazılan "script"leri sunucu üzerinde yorumlayan "hypertext preprocessor"üdür. Yani PHP scripting dilidir. Content management paketleri ile karıştırmamak gerekir.

PHP öğrenmek isteyen arkadaşlara http://www.php.net/docs.php adresinden online olarak okuyabilecekleri veya download edebilecekleri resmi PHP dökümanlarını tavsiye ederim.

Futurist'de "Siteyi yapan kişi tüm browserların desteklediği sayfanın anyaya konyaya kaymadığı biçimde düzenlemeli." demiş. Çok doğru... Çoğu kimse kurduğu Windows ile gelen browser müsfettesinde sitesi nasıl görünüyorsa biz de öyle görüyoruz sanıyor. Özellikle CSS ile tablosuz tasarım yaparken diğer browserlarda nasıl duruyor bakmak gerek. CSS, HTML dersleri veren sitelerde bile tonla hata oluyor. Nedense Firefox, Opera, Safari vs. yok sayılıyor.

Futurist'e bir de sorum var: "Slackware serverda şıkır şıkır yazılmış Php ballı kaymak gibidir" ne demek? Neden Slackware? Burada distro tartışması çıkarmaya çalışmıyorum, lütfen yanlış anlamayın ama ben evde GNU/Linux Debian ile çalışıyorum ve başka bir dağıtım üzerinede PHP server kurmadım. Slackware ile PHP server arasında bilmediğim bir ilişki mi var?
 
Server olarak Slackware derim başka bir şey demem bütün kontrol sendedir diğer dağıtımlarda kendi kafasına göre bir şeyler yüklemez. Dolayısıyla ne yüklemek istersen onu yüklersin sistem gereksiz yere ağırlaşmaz, server yönetiminde en son ne yaptıysan onu gözlersin. Kendi makinanda Debian rahattır zaten kişisel makinanda Slackware tavsiye etmem. Fazla sıkıcı ve yorucu gelecektir. Ben de Centos kullanıyorum kendi makinamda. Slackware ile PHP server bir ilişki yok aslında ben kendi düşüncemi yazdım ;) Linux dağıtımlarının hepsi Php server için uygundur sadece dağıtımların karakterleri farklıdır.
Ne demişler;

Linux for servers
Palm for mobility
Mac for graphics
Windows for solitaire ;)
 
Geri
Üst