我有一API
台服务器,我需要将所有获取数据放入数据库
我在连接到数据库后使用此代码:
foreach ($_GET as $key => $value)
$_GET[$key] = mysql_real_escape_string($value);
我的代码安全吗?
不,您的代码不安全!因为我们看不到您如何将数据放入查询中 - 这是最重要的事情。
你可以做很多错误的事情,比如:
$sql = "INSERT INTO {$_GET[table]} ({$_GET[column]}) VALUES ('{$_GET[value]}')";
只有最后一个值被安全转义,前两个不是!
此外,mysql_real_escape_string()
评估正在进行的数据库连接的编码设置。你以前连接过数据库吗?你设置了编码吗?
最后:在你真正需要之前不要逃避东西。过早的转义会导致各种问题,因为预先转义的数据可能同时用于其他用途。
目前是。但请注意,所有mysql_
函数都已弃用,将从 PHP 中删除,不再受支持。这带来了它自己的安全隐患。
考虑使用
mysqli_real_escape_string
更多信息
http://php.net/manual/en/function.mysql-real-escape-string.php
请阅读红色块并注意有关默认字符集的安全注释。适用于这两个功能。