Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL、魔引号和301重定向-SQL注入风险?_Php_Mysql_Sql Injection - Fatal编程技术网

Php SQL、魔引号和301重定向-SQL注入风险?

Php SQL、魔引号和301重定向-SQL注入风险?,php,mysql,sql-injection,Php,Mysql,Sql Injection,我们正在将php升级到5.5,现在不推荐使用magic quotes,因此我们正在删除它们并将其转换为PDO,而我们还没有这样做 然而,我遇到了一种情况,即没有要转换的查询,我正在尝试确定我的代码是否正常 这个页面纯粹是一个301重定向从旧的遗留代码。这基本上是之前的整个页面代码: <?php $id = "0"; if (isset($HTTP_GET_VARS["id"])) { $id = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS["id

我们正在将php升级到5.5,现在不推荐使用magic quotes,因此我们正在删除它们并将其转换为PDO,而我们还没有这样做

然而,我遇到了一种情况,即没有要转换的查询,我正在尝试确定我的代码是否正常

这个页面纯粹是一个301重定向从旧的遗留代码。这基本上是之前的整个页面代码:

<?php
$id = "0";
if (isset($HTTP_GET_VARS["id"])) {
  $id = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS["id"] : addslashes($HTTP_GET_VARS["id"]);
}

header('HTTP/1.1 301 Moved Permanently');
header('Location: http://example.com/newpage.php?id='.$id);
exit();

?>
<head>
</head>
所以,我的问题是:

这一改变是否合理和适当

因为我使用的是ctype_digit,所以我不认为有什么不好的地方可以通过,而且您可以假设newpage.php使用的是PDO查询。我想得对吗


一如既往地感谢您。

您的新代码看起来不错

重定向前可能会有更高的安全性:

1将id解析为int:

请参阅文档:


2检查数据库中是否存在“已解析”id或您想要的内容

您的任何摘录都与SQL有关。URL上下文将指示urlencode转义。安全风险可以很好地定义。一方面,您怀疑显示的简单代码中存在安全风险,另一方面,您假设使用PDO将神奇地消除所有安全风险。事实并非如此。这一切都取决于你是如何使用它的。你必须开始对安全问题进行清晰的推理。没有魔法。这是关于转义和验证用户输入,以及使用正确的编码和转义序列。在将参数传递到数据库之前,不要忘记再次清理newpage.php中的参数@LorenzMeyer-感谢您的回复。恕我直言,但我正试图就这些话题进行清晰的推理。显然,我的理解与您的不同,但我正在尝试学习和修复糟糕的遗留代码,并将stackoverflow用作检查工作的资源。我在努力学习!我知道没有魔法,我从来没有说过有魔法,所以我想我不明白你回答的语气。我只是想得到反馈。
<?php

// grab the variable
$rid = 1;
if (isset($_GET["id"]) && ctype_digit($_GET["id"])) // if the variable exists and is a positive integer
    {$rid = ($_GET["id"]);}
else
{
//die("This page doesn't exist");
}

header('HTTP/1.1 301 Moved Permanently');
header('Location: http://example.com/newpage.php?id='.$rid);
exit();

?>
<head>
</head>
$rid = intval($_GET['id']);