Php İle Dışarıdan Gelen Postu Engellemek
-
Hocam post ettiğin yer admin tarafı mı. Yoksa halka açık bir yer mi?
Admin tarafı ise zaten en başta kullanıcı oturumu kontrol ettiğin için daha post edilmeden sessiona takılır o yüzden kafan rahat olsun.
Halka açık bir yerde ise referer veya captcha en sağlıklı çözümdür.
-
Htaccessden istisna tanımlamadıysan apache başka domainden veri girişini engeller zaten.
-
-
arkinfes bunu yazdıfiki bunu yazdı
yahu adam ne sormuş siz ne cavaplar vermişsiniz. csrf tokenlar ıvırlar zıvırlar havalarda uçuşmuş. şimdi hocam ben sana şöyle açıklayayım. TinyMCE'den veri alıp database'e kaydediyorsan ve sonra bunu biryerlerde ekrana basıyorsan 2 zafiyetin oluşma ihtimali var.
- SQL Injection
- XSS
Gel gelelim bunlardan korunmaya.
SQL Injection;
- PDO kullan.
- Yok ben PDO kullanmam mysql_* fonksiyonları kullanıyorum dersen; gelen veriyi "mysql_real_escape_string" fonsksiyonuna al ve o hali ile database'e kaydet. Sonra o veriyi bir yerde ekrana basacaksan db'den çektiğin halini "stripslashes" fonksiyonundan geçirip ekrana bas ki eğer mysql_real_escape_string tırnak gibi karakterlerin önüne ters slash koymuşsa onları düzeltsin diye.
XSS;
XSS için TinyMCE zaten birşey öneriyor. o önerdiği şeyler şu sayfada mevcut: http://archive.tinymce.com/wiki.php/TinyMCE3x:Security
Listedekilerden "zend filter input" geçerliliğini yitirdiğinden tavsiyem "htmlawed" kullanman. Ama istersen "HTMLPurifire" da kullanabilrisin. Karar senin.
@fiki
Hocam ilk öncelikle allah razı olsun :) zaten PDO kullanıyorum eskiden Mysql_* kullanırdım bu sefer ki projemde PDO ya geçtim ve biraz zorlandım en önemlisi Bind etmeyi falan hiç anlamadım direkt normal ekliyorum sisteme tabi önce yazdığım fonksiyonda geçiriyoum üstüne mysql_real_escape_string den geçiriyorum. Google captcha kullanmayı planlıyrorum o çözüm olur gibime geliyor. Sizden tek istediğim hangi kodları süzmem gerekiyor ? sedece script yeterli mi ?
Bu fonksiyon yeterli mi ?:
function htmlbak($text) {
$text=str_ireplace("<script","",$text);
$text=str_ireplace(" // <!CDATA ","",$text;
$text=str_ireplace("","",$text);
$text=str_ireplace(",","",$text);
$text=str_ireplace(" // ]]> ,","",$text);
$text=str_ireplace("<style,","",$text);
$text=str_ireplace(",","",$text);
$text=str_ireplace(",","",$text);
return $text;
}
Hayır hocam bu kod yeterli değil. Zira @lepusmorris hocamın örneğini verdiği gibi birçok xss e sebebiyet verecek yöntem mevcut. <img src=x onerror=alert(2)> vs gibi. Xss için çözümü ilk yorumumda söylemiştim tekrarlayayım "Listedekilerden "zend filter input" geçerliliğini yitirdiğinden tavsiyem "htmlawed" kullanman. Ama istersen "HTMLPurifire" da kullanabilrisin. Karar senin.".