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