PHP,Güvenlik Ve Hız
-
PHP'de güvenlik ve hız konusunda tecrübelerinizi merak ediyorum.
inputtaki veriyi addslash ile almak gibi ya da mysql e kayıtta filtrelemek gibi ya da XSS, sql injection açıklarını kapatma yöntemleri gibi ya da OOP fonksiyon yazarken public private protected _contructor kullanmanın önemi gibi konular. Tabi örnek olsun diye verdim bu başlıkları sizden çok çeşitli bilgiler istiyorum.
Önceliğim Güvenlik konusu.
-
Hız :
hız yazdığın kodun tamamıyla alakalıdır. bloglarda forumlarda felan görüyoruz yok print fonksiyonu echodan daha hızlı şu şundan bu bundan hızlı diye. böyle şeylere takılma. Kodu bi bütün olarak düşün. genelde en kasıntı yerler döngüler ve sorgulardır. Projeler yaptıkça onlarda yerine oturur zaten.
Güvenlik :
xss sql injection vs alayı için dökümanlar bölümünde çok güzel yazılar var yararlanabilirsin. ama saldırının mantığını anlamazsan güvende olamazsın.
-
şu sorduğun soru üzerine kitap yazılır, bi yoruma sığacak şey değil ki. püf nokta istiyorsan; bütün açıkların nasıl çalıştığını bil ve kendi yazdığın sistemin açığını başkalarından önce kendin bulmaya çalış. zamanla kodu yazarken alışacaksın geçen burda şöyle yapmıştım açık çıkmıştı o yüzden böyle yapmam lazım diye.
-
Genel geçer bilgileri hepimiz biliyoruz arkadaşlar, madem bunun üzerine kitap yazılır illa ki yazılmıştır o zaman paylaşın. Ya da usta yoda gibi hislerini kullan falan demeyin, teknik bilgi veriyorsanız verin vermiyorsanız yazmayın.
-
kaynaklar, işe yararları buldukça editleyeceğim:
http://www.php.net/manual/en/security.database.php
http://www.phpfreaks.com/tutorial/php-security
http://www.devshed.com/c/a/PHP/PHP-Security-Mistakes/
http://phpsec.org/projects/guide/
https://www.owasp.org/index.php/Top_10_2010-Main
http://docforge.com/wiki/Web_application/Security
http://www.addedbytes.com/articles/writing-secure-php/writing-secure-php-1/
http://php.net/manual/en/security.database.sql-injection.php
http://shiflett.org/articles/cross-site-request-forgeries
https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords
kvasir tarafından 14/Kas/12 14:42 tarihinde düzenlenmiştir -
sql inj için kaynağa ihtiyacın varsa
http://tahribat.com/Dokuman-Php-Ile-Basit-Sql-Injection-Onleme-Yontemleri-417/
-
Slothere bunu yazdı
sql inj için kaynağa ihtiyacın varsa
http://tahribat.com/Dokuman-Php-Ile-Basit-Sql-Injection-Onleme-Yontemleri-417/
teşekkür ederim.
-
Sonunda adam gibi bir konu ya..
-
hız konusunda print-echo arasındaki fark gibi şeylere hiç takılma zaten hocam. senin için hızla ilgili problemler hep algoritmanla alakalı olacaktır. gereksiz döngüden, sorgudan kurtulduktan sonra seni zorlayacak bireşy olmaz. echo ile print arasındaki performans farkını bırak facebook düşünsün :)
-
Kaynakları düzenledim.
-
Hataları ekrana bastırma. error_reporting kapalı olsun.
Hata çıkabilecek yerlerde @ kullanma. Bunun yerine hata çıkabilecek yeri önceden kestirip ekstra sorgular ekle. Bunun halının altına süpürmekten farkı yok.
SQL işlemlerinde biliyorsan pdo sınıflarını kullan. Bilmiyorsan dikkat etmen gerekenleri yukarıdaki başlıktaki anlatımımda söyledim. Pdo kullanırsan bu kadar ince düşünmene gerek kalmaz.
echo, print falan filan hangisini kullanacaksan kendin seç farketmez. Çok uç nokta projelere girişmediğinde müddetçe aradaki farkı hissetmeyeceksin.
Tek tırnak mı çift tırnak mı olayına yine uç proje yapmadıkça takılma. Değişkeni çözümlendirip php'yi yavaşlatmayayım diye koca bir satırı çkarınca duasına çevirmenin manası yok.
Db'den veri çekerken select * from xx şeklinde tüm verileri çekme. Lazım olduğu kadar, kullanacağın kadar veriyi çek.
Get değerleriyle iş yaparken gelen verinin aradığın türde olup olmadığını sorgula. Eğer şüpheye düşersen hiç bir işlem yaptırma, veriyi düzenlemeye, filtrelemeye falan çalışma.
Eğer komplike bir sistem hazırlamaya çalışıyorsan, class yapılarını ve tasarım desenlerini az çok biliyorsan mümkün olduğunca oop tarzı yazmaya çalış. Ama çıkıpta tek bir sayfa işlem yapılacak yerde sınıf yazıp getter setter bilmemne tanımlamaya kalkma. İşin yerini bil, yerine göre iş yap.
Hazır sınıf çok işine yaramadıkça kullanma. Hatta php'yi güzelce öğren, kendi sınıfını yaz onları kullan. Eğer piyasa senin için önemliyse piyasada en çok talep edilen sınıfı genel hatlarıyla öğren, iş yapacağın zaman alt dalları nasılsa bir şekilde öğrenirsin. Hayatını bir sınıfı öğrenmeye harcama.
Mysql yerine mysqli kullan. Geleceğe yatırım. Mysql'in gelişimi durdu.
