PHP:已知的带有';注意:未定义索引:变量';
对不起,如果已经在其他地方解释了,我已经搜索了又搜索,没有找到答案 起初,看到这个通知让我想修复它,但经过思考——它会带来什么伤害 在下面的例子中,有人怎么可能恶意利用? 如果他们不能,也许有人可以给我举个例子,说明这个“未定义索引”通知可能会导致问题PHP:已知的带有';注意:未定义索引:变量';,php,Php,对不起,如果已经在其他地方解释了,我已经搜索了又搜索,没有找到答案 起初,看到这个通知让我想修复它,但经过思考——它会带来什么伤害 在下面的例子中,有人怎么可能恶意利用? 如果他们不能,也许有人可以给我举个例子,说明这个“未定义索引”通知可能会导致问题 if($_GET['action']=="update"){ ~code~ } 我知道上面的例子可以通过使用“isset”这样简单的方法来修复,但我还有其他一些地方需要注意,比如下面围绕着一个代码类似于: print "<input
if($_GET['action']=="update"){ ~code~ }
我知道上面的例子可以通过使用“isset”这样简单的方法来修复,但我还有其他一些地方需要注意,比如下面围绕着一个代码类似于:
print "<input value='".$_POST['value']."'>";
print”“;
高级用户是否有可能使用漏洞?通知不是关于安全问题的警告。它有助于防止逻辑错误。您正在请求此索引,但它不存在:
- 它应该存在吗?为什么你以前没有设定呢
- 它被删除了吗?为什么?您是否仍然可以访问它
- 钥匙换了吗?你为什么还没有呢
调用
时是否考虑到该更改操作
当然,这是一个非常好的习惯:修复所有警告、错误和通知,以确保您的逻辑完全按照您希望的方式运行。计算机是愚蠢的,这是事实。他们总是按照你的要求去做,即使你问他们一些愚蠢的事情。通知并不是关于安全问题的警告。它有助于防止逻辑错误。您正在请求此索引,但它不存在:
- 它应该存在吗?为什么你以前没有设定呢
- 它被删除了吗?为什么?您是否仍然可以访问它
- 钥匙换了吗?你为什么还没有呢
调用
时是否考虑到该更改操作
当然,这是一个非常好的习惯:修复所有警告、错误和通知,以确保您的逻辑完全按照您希望的方式运行。计算机是愚蠢的,这是事实。他们总是按照你的要求去做,即使你问他们一些愚蠢的事情。一般来说:如果有人能看到你的PHP消息(不管是通知还是警告),他就会知道关于你脚本的一些信息:可能,它的结构,使用的变量和参数名称e t.c.-即在正常情况下不应看到的此类信息。有了这些信息,执行一些有害的操作就容易多了
然而,这不仅仅是安全问题。在任何情况下收到通知都表明可能出了问题——你的注意力应该集中在这一点上。我的建议是:您应该编写代码,它不会产生任何错误级别的通知/警告。一般来说:如果有人能看到您的PHP消息(不管通知/警告),他就会知道关于您的脚本的一些信息:可能,它的结构,使用的变量和参数名称e t.c.-即在正常情况下不应看到的此类信息。有了这些信息,执行一些有害的操作就容易多了
然而,这不仅仅是安全问题。在任何情况下收到通知都表明可能出了问题——你的注意力应该集中在这一点上。我的建议是:您应该编写代码,它不会产生任何错误级别的通知/警告。未定义的索引错误与安全问题无关。这意味着在表达式中使用变量之前,没有正确初始化变量。不管有什么安全隐患,您都应该修复它,因为这意味着您的代码不正确
现在回到您最初关心的问题,来自用户输入的任何数据在存储到数据库之前都应该经过清理。您可以使用多种技术。从类型转换到使用mysqli_real_escape_string()和strip_tags()等函数转义数据,再到使用准备好的语句。你应该仔细阅读这个话题。数据清理不是“一刀切”的事情。根据数据的性质和使用方式,可以使用不同的策略 未定义的索引错误与安全问题无关。这意味着在表达式中使用变量之前,没有正确初始化变量。不管有什么安全隐患,您都应该修复它,因为这意味着您的代码不正确
现在回到您最初关心的问题,来自用户输入的任何数据在存储到数据库之前都应该经过清理。您可以使用多种技术。从类型转换到使用mysqli_real_escape_string()和strip_tags()等函数转义数据,再到使用准备好的语句。你应该仔细阅读这个话题。数据清理不是“一刀切”的事情。根据数据的性质和使用方式,可以使用不同的策略 混淆您使用$\u GET然后使用$\u POST..使用未初始化的GET和POST已经是一个很大的漏洞,除此之外,这些通知将向您的黑客提供一些元信息,他可以从中受益。一般来说,是关于生产系统的