GET参数易受SQL注入攻击 - PHP

csm*_*32s 3 php mysql security sql-injection

我被要求处理由另一个程序员设置的网站的安全问题.到目前为止,我还没有看到任何代码,所以我在这一点上做了假设,我想覆盖我的基础.托管该站点的组进行了安全检查,发现他们的代码容易受到SQL注入攻击.

示例:www.example.com/code.php?pid = 2&ID = 35(GET参数ID易受SQL注入攻击)

现在,因为我是一个新手,我解释说,我可能可以解决与主机的问题,但他们的网站上仍然需要由人谁拥有安全的更深层次的知识看了过来.

因此,为了处理潜在的SQL注入(并且没有看到代码),我会使用mysql_real_escape_string:

$query = sprintf("SELECT * FROM table WHERE pid='%s' AND ID='%s'",
            mysql_real_escape_string($pid),
            mysql_real_escape_string($id));
Run Code Online (Sandbox Code Playgroud)

另外,我会考虑mysqli_real_escape_string和预处理语句,但我不知道它们是如何配置的.但mysql_real_escape_string会处理潜在的SQL注入吗?

ale*_*lex 5

mysql_*如果可以,请跳过旧的东西并使用PDO.

$pdo = new PDO('mysql:host=localhost;dbname=whatever', $username, $password);

$statement = $pdo->prepare('SELECT * FROM table WHERE pid=:pid AND ID=:id');

$statement->bindParam(':pid', $_GET['pid']);

$statement->bindParam(':id', $_GET['id']);

$results = $statement->execute();

var_dump($results->fetchAll());
Run Code Online (Sandbox Code Playgroud)