2

我有一API台服务器,我需要将所有获取数据放入数据库

我在连接到数据库后使用此代码:

foreach ($_GET as $key => $value)
$_GET[$key] = mysql_real_escape_string($value);

我的代码安全吗?

4

2 回答 2

8

不,您的代码不安全!因为我们看不到您如何将数据放入查询中 - 这是最重要的事情。

你可以做很多错误的事情,比如:

$sql = "INSERT INTO {$_GET[table]} ({$_GET[column]}) VALUES ('{$_GET[value]}')";

只有最后一个值被安全转义,前两个不是!

此外,mysql_real_escape_string()评估正在进行的数据库连接的编码设置。你以前连接过数据库吗?你设置了编码吗?

最后:在你真正需要之前不要逃避东西。过早的转义会导致各种问题,因为预先转义的数据可能同时用于其他用途。

于 2013-02-04T22:02:14.503 回答
4

目前是。但请注意,所有mysql_函数都已弃用,将从 PHP 中删除,不再受支持。这带来了它自己的安全隐患。

考虑使用

mysqli_real_escape_string

更多信息

http://php.net/manual/en/function.mysql-real-escape-string.php

请阅读红色块并注意有关默认字符集的安全注释。适用于这两个功能。

于 2013-02-04T21:45:17.080 回答