0

对不起,如果已经在其他地方解释过,我已经搜索和搜索并没有找到答案。

最初,看到这个通知让我想修复它,但经过反思 - 它会带来什么危害?

在下面的示例中,有人如何恶意利用?如果他们不能,也许有人可以给我一个例子,这个“未定义索引”通知可能会导致问题?

if($_GET['action']=="update"){   ~code~  }

我知道上面的例子可以像使用'isset'一样简单地修复,但我还有其他带有注意事项的区域,例如下面的表格,其代码类似于:

print "<input value='".$_POST['value']."'>";

高级用户是否有可能使用漏洞?

4

3 回答 3

3

通知不是关于安全问题的警告。它有助于防止逻辑错误。您要求此索引,但它不存在:

  • 它应该存在吗?为什么之前没有设置?
  • 它被删除了吗?为什么 ?您是否仍然可以访问它?
  • 钥匙变了吗?为什么你在打电话时没有考虑到这种变化action

这只是 PHP 很好:这不存在,我会初始化它,但你不希望我找到什么吗?

请记住,PHP 是一个非常松散的。它旨在快速创建应用程序,让程序员专注于逻辑,而不是细节。通知(最近实施)是一种使逻辑更清晰的方法,而不会在第一个小错误时停止整个程序。

当然,这是一个非常好的习惯:修复所有警告、错误通知,以确保您的逻辑完全按照您的意愿行事。计算机是愚蠢的,这是事实。他们总是按照你的要求去做,即使你问他们一些愚蠢的事情。

于 2013-10-03T08:16:52.237 回答
1

未定义的索引错误与安全问题无关。这意味着在表达式中使用变量之前,您没有正确初始化变量。无论安全隐患如何,您都应该修复它,因为这意味着您的代码不正确。

现在回到您最初关心的问题,任何来自用户输入的数据都应该在存储到数据库之前进行清理。您可以使用多种技术。这些范围从类型转换到使用 mysqli_real_escape_string() 和 strip_tags() 等函数转义数据到使用准备好的语句。你应该阅读这个主题。数据清理不是“一刀切”的事情。根据数据的性质和使用方式,可以使用不同的策略。

于 2013-10-03T08:24:10.173 回答
1

一般来说:如果有人可以看到您的 PHP 消息(无论是通知/警告) - 他就会知道有关您的脚本的一些信息:可能是它的结构、使用的变量和参数名称等 - 即在正常情况下的此类信息不应该被看到。有了这些信息,执行一些有害的操作就容易多了。

然而,这不仅仅是关于安全性。在任何情况下都有通知表明可能出了问题——你的注意力应该在那个点上。我的建议是:您应该编写不会产生任何错误级别的通知/警告的代码。

于 2013-10-03T08:19:57.903 回答