基本SQL注入?

Nor*_*ert 4 php mysql sql sql-injection

之前的一个问题中我被告知我的查询很容易被SQL注入.

get_stats = mysql_query("SELECT * 
                               FROM visitors 
                              WHERE site='$_GET[site]' 
                                AND date BETWEEN '$start_date' AND '$end_date' ");
Run Code Online (Sandbox Code Playgroud)

解决这个问题最简单的方法是什么?你是否有关于注射问题的进一步阅读?(我可能会想念谷歌的东西).谢谢!

Ric*_*dle 16

使用准备好的陈述.

在大多数情况下,Prepared Statements可以安全地将您的查询与您的参数相结合.


Jas*_*vis 8

$ _GET ['site']是一个直接来自浏览器中URL的值,这意味着用户可以轻松地将此值更改为他们想要的任何值,您应该在将值发送到数据库之前检查/清理该值.

像这样的东西将是一个开始,仍然可以使用更多的工作,有很多方法,我会创建一个自定义函数/类,以轻松地通过整个网站传递所有变量,这可以简单地重复这样的东西,像这样

$site = mysql_real_escape_string($_GET['site']);
$start_date = mysql_real_escape_string($start_date);
$end_date = mysql_real_escape_string($end_date);

get_stats = mysql_query("SELECT * FROM visitors WHERE site='$site' AND date >= '$start_date' AND date <= '$end_date' ");
Run Code Online (Sandbox Code Playgroud)