Hiçbir giriş doğal olarak geçersiz hatta mutlaka kötü niyetli olduğundan size açıklamak gibi giriş süzme hiç "bir ve tek" yolu vardır. Bu do girişi ile bu konularda ne tamamen bulunuyor.
Örneğin, $_GET['field']
bazı metin var varsayalım ve bir SQL sorgusu oluşturmak üzeresiniz. Sen escape kullanarak değer mysql_real_escape_string()
(MySQL için, elbette) gibi pek gerekir:
$sql = "INSERT INTO some_table (some_field) VALUES ('" . mysql_real_escape_string($_GET['field']) . "')";
Bu kaçışa bir SQL sorgusunda kullanılarak konum girişine uygulamak için kesinlikle çok önemlidir. Burada gördüğünüz gibi uygulandığı bir kez, bir hacker bile kötü niyetli giriş veritabanı üzerinde hiçbir kötü etkisi olacaktır.
Ancak, bu işlev yararsız ve sayfanızda bazı HTML çıktı $_GET['field]
dahil olmak üzere eğer düpedüz wrong kullanmak için hem de. Bu durumda, işlev htmlspecialchars()
yararlıdır. Sen böyle bir şey yapacağım:
echo "<p>Your comments were: " . htmlspecialchars($_GET['field']) . "</p>";
Her ikisi de bu örnekler oldukça güvenli "hacker gibi girdilerin." Eğer veritabanına veya HTML içine kötü niyetli veri ekleme olmayacaktır. Oysa, kaçan iki biçimleri tamamen farklı fonksiyonları, kullanımı her uygundur fark.
Eğer aynı anda bu iki kullanım için girdi "doğrulamak" için çalıştı aksine, hayal. Bu Cross-Site Scripting gibi kötü niyetli HTML saldırısının parçası olabilir çünkü kesinlikle, <
veya >
karakter izin veremezdi. Yani, yazmak istiyorum ziyaretçiler stymied olurdu "Ben 1 <3 düşünüyorum". Aynı şekilde, kötü niyetli SQL enjeksiyon saldırıları korkusuyla tırnak işaretleri izin veremezdi, çok kötü "Miles O'Brien" formunuzu doldurun asla!
Eğer (genellikle giriş doğrularken bile daha kolay!) Farklı bağlamlarda kullanmak henüz sonuç çok daha iyi olduğu gibi uygun giriş escaping, yapmak çok kolaydır.