php GET保护,我真的需要吗?

时间:2011-04-10 12:22:00

标签: php

我有一个php页面。它通过get获得id的值。 2个简单的问题:

1 - 在我的代码中,这只使用一次。在if语句中:

if ($_GET['id']==1){
Things here....
}

这是唯一使用此传递的id值。我是否需要对其进行消毒?或者我可以将其安全地保存在if语句中而不进行检查吗?黑客可以穿透这个吗?

2 - 如果我将它分配给变量,我是否需要对其进行消毒:

$idid=$_GET['id'];
if ($idid==1){
Things here...
}

就像之前这是该变量的唯一用途一样,它不会在echo或mysql等中使用。

4 个答案:

答案 0 :(得分:2)

如果将GET值插入某个可能有害的地方,即echo(XSS),mysql_query(SQL注入),eval(PHP,则只需要担心卫生问题执行),shell_exec(Shell执行),......(Exploitable PHP functions更广泛的列表)

只需检查一个值就不需要任何卫生设施了。

答案 1 :(得分:1)

不,你不需要对它进行消毒,因为如果它没有除1之外的任何值,它就什么都不做。

答案 2 :(得分:0)

  

我是否需要对其进行消毒或者我可以将其安全地保存在if语句中而不进行检查吗?

这取决于您希望达到的质量水平。看起来你访问了一个你没有测试存在的密钥的$_GET数组。

这可以触发通知,例如“注意:未定义的索引:id”,其中也包含文件名。

根据服务器配置的不同,此消息可能会发送给请求相关网站但未提供id网址查询参数的所有人。

除了向潜在攻击者提供的信息之外,传播通知会使您难以为整个脚本达到一定的质量水平,例如:如果您决定将通知和错误转换为反馈以维护和改进脚本。

  

黑客可以穿透这个吗?

此信息可用于进一步渗透您的网站。


根据您显示的代码,您不会进一步使用变量/值,据我所知,information exposure旁边没有其他问题。

它总是受制于您想要实现的目标,安全性并非一成不变。请参阅Defensive programmingSecure input and output handlingPostel's law

答案 3 :(得分:-2)

使用===而不是==来确定条目的类型。 在我看来,你不需要做很多努力来保护输入。 只确保输入确实是一个数字。