PHP kodunuzu koruyun
- Genelde web saldırısı nedeniyle, OS sunucusu ve http sunucusu dışındaki kullanıcılardan (formlar ve URL'ler vb.) Güvenli veri sağlamak çok önemlidir.
- PHP kodunuzu güvence altına almak için 3 kategori vardır:
Veri kullanıcılarının doğrulanması
Site, kullanıcıların içerik yakalamalarına ve göndermelerine izin veren formlar sunduğunda, bu girişlerin biçimini (e-posta adresi, telefon numarası, ürün miktarı) belirtmek için yeterli değildir. Veriler uygunsa sunucu da izlenmelidir (örn. PHP). beklentimiz için geleneksel. Tüm sayıları dikkate alarak, kullanıcı tarafından gönderilen tüm verileri dönüştürün:
URL’den veya Formlardan veri doğrulama
Neredeyse tüm veriler web yöneticisinin kurduğu URL’den veya formlardan alınmıştır. Neredeyse tüm URL'ler aşağıdaki gibi belirten parametreleri gösterir:
/index.php?rub=25
Ancak bu parametre değiştirilmemelidir. Ancak bu aşağıdaki gibi mümkündür:
/index.php?rub=0 /index.php?rub= /index.php?rub=aaaaAAAAAaaaa /index.php?rub=1+ or+1
- Veri türleri ne olursa olsun, URL veya form yoluyla alınan biçimin beklenip beklenmediğini kontrol etmek çok önemlidir.
- Aynısını doğrulamak için filter_input () işlevini kullanabilirsiniz.
- Örneğin, biçim alanından bir kullanıcıdan bir e-posta alan adıyla gelen bir e-posta aldıysanız. Aynı şekilde kurtarabilirsiniz:
$ email = filter_input (INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); if ($ email) {// E-posta adresi girişi gerçekten bir posta adresi formatıdır}
Bu fonksiyon birçok şeyi filtreleyebilir: IP adresi, URL vb. Htmlentities () tarafından işlem olarak URL yoluyla göndermeden önce kodlama dizesi gibi değişiklikler olabilir.
- "|" Kullanılarak birkaç filtre birleştirilebilir. .
- Bir ip adresini sadece Ipv4 formatında doğrulamak için:
$ ip = filter_input (INPUT_GET, 'ip', FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);
Filtreler için aşağıdaki bağlantıya tıklayın:
//www.php.net/filter
URL’nin görüntülenen içeriğini atla
Kullanıcı tarafından girilen içerik ekranda görüntülendiğinde, HTML'yi veya JavaScript kodunu içerir, ancak bu da korumayı zorunlu kılar.
HTML'de görüntülenecek içerik: tüm karakterleri eşdeğer HTML varlıklarında dönüştürmek için ayarı HTML kodlamanız gerekir. Aşağıda bu işlemi otomatikleştirmek için php işlevi var:
echo htmlentities ($ _ İSTEK ['içerik']);
İçeriğin bir URL’de gösterilmesi gerekiyorsa: İçeriğin urlen kodunu girmeniz gerekir.
PHP'nin bu kodlamayı yapmak için iki işlevi vardır: urlencode () ve rawurlencode (). Bu iki işlev arasındaki fark, birinci işlevde ikincisinde% 20 ve "+" veren ve sağlayan bir alanın kodlanmasıdır.
echo '//www.website?valeur='.urlencode($_REQUESTГ'value']);
İçeriğin bir veritabanında depolanması gerekiyorsa: Kullanılan veritabanı sunucusunda belirli bir rolü olan tüm karakterlerden kaçmak gerekir. PHP ve MySQL için, mysql_escape_string () işlevi, parametre olarak geçirilen dizedeki potansiyel olarak zararlı tüm karakterleri yapar.
$ query = 'SELECT id FROM WHERE user = "'. mysql_escape_string ($ _ REQUEST ['kullanıcı']). '"';
Sunucunun PHP seçeneği magic_quotes ile yapılandırıldığını unutmayın, kullanıcılar tarafından iletilen veriler otomatik olarak ters eğik çizgilerle (ters eğik çizgi) korunur. Bu nedenle, mysql_escape_string'i korumadan önce bu temel korumayı "geri almalısınız " :
$ query = 'Mytable WHERE kullanıcısından SELECT kimliği = "'. stripslashes (mysql_escape_string ($ _ REQUEST ['user'])). '"';