SQL enjeksiyon girişimi PHP 5.2.6

3 Cevap php

Using PHP 5.2.6 in XAMPP :
I read about sql injections here and tried that with the following login form :

<html><body>
    	<form method='post' action='login.php'>
    		<input type='text' name='user'/>
    		<input type='text' name='pass'/>
    		<input type='submit'/>
    	</form>
</body></html>

ve php kodu:

<?php
$user = $_POST['user'];
$pass = $_POST['pass'];
$query = "Select * from users where user='$user' AND pass='$pass'";
echo $query;
mysql_connect('localhost','root','');
mysql_select_db('test');
$res = mysql_query($query);
if($res) $row = mysql_fetch_assoc($res);
if($row) echo 'yes';
?>

What I found out was, the $pass variable already had all the special characters escaped. So, is there no need to use the mysql_real_escape_string in PHP 5.2.6 then?

3 Cevap

Bu PHP sunucu kullanmak üzere yapılandırmak olduğunu olasıdır Magic Quotes. Otomatik olarak bir PHP komut dosyası gelen tüm verilerin kaçar PHP bir ayar önerilmiyor. PHP 6 önerilmemektedir ve silinecektir. Here are Zend's reasons Sihirli Tırnaklar kaldırmak için.

Birçok işler yapar ama diğerleri kırılır 'sihirli' dayanmaz daha iyidir. Açıkça giriş kaçan daha güvenilir ve daha iyi kod tasarımı yapar. Örneğin, tüm giriş aynı şekilde kaçan edilmesi gerekmektedir.

Değerler nedeniyle Magic Quotes sunucu yapılandırmada etkin olmanın kaçtı olabilir. Magic tırnak temelde söz tam bir nedenle, çok kötü olarak kabul edilir. Bu ya automagically gelen verileri kaçmak için olmayabilir bir özellik güvenmek için güvenli değildir. Bu çalışma zamanında kendiniz yapmak için much iyidir.

Magic tırnak hakkında daha fazla bilgi için, ve onlar kötü konum, ve onları nasıl devre dışı bırakmak için, neden bu SO sorular / cevaplar birkaç bir göz atın:

Hayır, burada olduğunu sanmıyorum. Sihirli bu örnekte özel karakterleri kaçar php olsun ya da olmasın, tercüman sorgu args üzerinde mysql specific kaçan gerçekleştirmek için gitmiyor.

Ben bu kodu bir güvenlik açığı var ki son derece olası olduğunu düşünüyorum.