Ben kullanıcı girdileri için başka ne yapmalıdır?

6 Cevap php

Son zamanlarda, ben bir müşteri tarafından benim sitelerin bazıları üzerinde denetim çalışması vardı. Onlar ile geri geldi şeylerden biri insanlar hala veritabanına potansiyel zarar verebilecek gibi ben biraz daha iyi giriş verilerini sterilize edilebilir olmasıydı.

Aşağıdaki fonksiyon Şu anda kullanıyorum (eski geliştirici bir artık) ama potansiyel sorun nerede olabileceğini göremiyorum budur.

Veritabanına geçti alır dize sırayla bir Flash uygulaması tarafından okunan XML ile görüntülenir.

Herkes eksik ne olabileceğini söyleyebilir misiniz? Teşekkürler

function secure_string($string)
{	
	return (strip_tags(addslashes(mysql_real_escape_string(
                      stripslashes($string)))));
}

6 Cevap

Iyi giriş temizliği için yeni bir PHP işlevi filter_var() kullanın. Yeni ve daha iyi.

Çok fazla bu işlevi orada oluyor gibi görünüyor. mysql_real_escape_string() zaten kaçmak için gereken her şeyi kaçar, bu yüzden bu konuda addslashes() çalıştırmak için gerek yoktur. Aslında, mysql_real_escape_string() oluşturur tersbölüleri kaçan yarardan çok zarar verebilir.

mysql_real_escape_string son adımdır, bunu uygulama mantığı kullanmak gerekir. Bu amaç veritabanına dizeleri geçmek, yani sorguları oluşturarak yalnızca kullanmak için tek bulunuyor. Sen mysql_real_escape_string bir şey geçebilir ve güvenli bir veritabanında saklayabilirsiniz emin olacaktır.

Geri kalanı için, ne istiyorsun bağlıdır. Eğer etiketleri şerit istiyorsanız, strip_tags, vb kullanabilirsiniz

Sunucu php 5.2 veya daha iyi kullanıyorsa, filter_var XML bölümü için kullanmak gerekir.

$output = filter_var($input, FILTER_SANITIZE_STRING);

, Veritabanına bir şey saklamak PDO ve parametreli sorguları kullanın.

Sorun output anda olur, çünkü input anda sorunu denemek ve çözmek için bir yanlış isim. Burada üzerinde benim cevaba bakınız:

What’s the best method for sanitizing user input with PHP?