önleyin hack için php kod parçası

5 Cevap php

Ben sitede bir php dosyası var, ve ben, db bazı kayıtları almak ve aynı dosyada bunları listelemek için bağlayın.

mysql_connect("localhost", "blabla", "blabla") or die(mysql_error());
mysql_select_db("blabla") or die(mysql_error());

$blabla1 = mysql_query("SELECT * FROM gallery WHERE id_cat=1");
$blabla2 = mysql_query("SELECT * FROM gallery WHERE id_cat=2");
$blabla3 = mysql_query("SELECT * FROM gallery WHERE id_cat=3");

Yani, güvenlik için yapmanız gereken bir şey var mı? :/ Sql enjeksiyon veya başka bir şey gibi. url olacak hiçbir şey yoktur. Sadece www.blabla.com / gallery.php olduğunu

takdir önerir! thanks a lot!

5 Cevap

Sorgu dizesi koymak hiçbir değişken vardır çünkü bu pasajı, tamamen güvenlidir.

Durumda güvenli çalışma değişkenler bir gün uğraşmak zorunda - kullanıcıya doğrudan gelen veya başka bir veri kaynağından olmak - Eğer parametrized sorguları destekleyen bir mySQL kütüphane üzerinden geçmek isteyebilirsiniz gibi {[(0) }]. Onlar otomatik olarak gelen veriyi kaçan ilgileneceğim çünkü bu tamamen enjeksiyonları tehlikesini ortadan kaldırabilir.

Eğer mysql_* fonksiyonları ile sopa varsa, emin olun mysql_real_escape_string() and bir çift içine sokulur sağlamak kullanarak all incoming herhangi bir veri kaçış yapmak tek tırnak.

Burada hiçbir güvenlik sorunları vardır. Eğer kullanıcı girişi almak ve sorgularda kullanabilirsiniz burada SQL enjeksiyon ortaya çıkabilir.

galeri tabloda bazı kullanıcı girişi içeriyorsa, daha sonra bazı XSS ​​saldırı yapılabilir. Bunu önlemek için, tüm güvenilmeyen kullanıcı girişi tarayıcıya yazdırmadan önce htmlspecialchars() fonksiyonu kullanılarak hazırlanmalıdır.

Sorgularda girişi sağlanan hiçbir kullanıcı gibi bu pasajı, güvenlidir.

Eğer URL'den veya POST görüntülenmesi gereken kategorisini alarak, örneğin userinput yaptıysanız hazırlanmış ifadeler kullanmak gerekir. Bu bile kullanıcı girişi ile güvenli olabilir. Sql ayrıştırılır ve daha sonra parametreler eklenir çünkü bu saf kaçan çok daha güvenlidir. Bu performans için daha iyi ve userinput sql sorgunun yapısını değiştiremezsiniz.

Bağlantı kodu web erişilebilir PHP script olduğunu varsayarak düşünebilirsiniz tek şey, ya da şudur:

  1. move the MySQL connection out of the script and into a file outside of the site's document root

  2. or, use externally-sourced variables (i.e. from a different file outside of the document root) for the username and password in place of hard-coded details in the script

Sunucu yerine PHP render kodunu görüntüler nedeni ne olursa olsun, o ayrıntılar görünümünde güvenli kalacaktır, eğer bu şekilde