php输入处理:除了邮件、查询和文件处理之外,还有风险吗?
我写php已经有相当一段时间了,直到现在才真正考虑过它,但是如果我只是在if语句中使用一个原始post变量,它是否有一点点有害的可能性呢?还是只在邮件、mysql或文件字符串中有害?只要不将用户设置变量传递给exec(),就安全了。在邮件、mysql、文件字符串中使用它是危险的,因为PHP只能向/从这些文件传递数据,而所有这些文件都是“哑巴”,它们完全按照命令执行。所以如果你告诉他们做一些危险的事,他们会的。与XXS相同,如果您接受用户输入并将其精确显示在页面上,用户可以将JS或iframes或一系列危险的东西添加到您的站点中只要您不将用户设置变量传递给exec(),您就是安全的。在邮件、mysql、文件字符串中使用它是危险的,因为PHP只能向/从这些文件传递数据,而所有这些文件都是“哑巴”,它们完全按照命令执行。所以如果你告诉他们做一些危险的事,他们会的。与XXS相同,如果您接受用户输入并将其精确显示在页面上,用户可以在您的站点中添加JS或iframes或一系列危险的内容否。字符串本身并不有害,除非PHP中存在错误 如果您对数据做出特定的假设,并在敏感流程中使用它而不进行验证,则字符串可能是有害的。考虑一下您在SQL语句中插入的值、文件名、eval中使用的片段(无论如何都不应该使用它们) 您基本上可以说这些字符串都是以某种方式执行的或在执行中使用的。 如果您从用户处获得输入,并且在这些情况下未经验证就使用该输入,那么您将面临风险php输入处理:除了邮件、查询和文件处理之外,还有风险吗?,php,Php,我写php已经有相当一段时间了,直到现在才真正考虑过它,但是如果我只是在if语句中使用一个原始post变量,它是否有一点点有害的可能性呢?还是只在邮件、mysql或文件字符串中有害?只要不将用户设置变量传递给exec(),就安全了。在邮件、mysql、文件字符串中使用它是危险的,因为PHP只能向/从这些文件传递数据,而所有这些文件都是“哑巴”,它们完全按照命令执行。所以如果你告诉他们做一些危险的事,他们会的。与XXS相同,如果您接受用户输入并将其精确显示在页面上,用户可以将JS或iframes或
在if语句中(我假设您谈论的是字符串比较,比如
if(userInput===='whatever')
),这根本不是问题。在这种情况下,您只是比较数据,没有执行任何操作。否。字符串本身并不有害,除非PHP中存在错误
如果您对数据做出特定的假设,并在敏感流程中使用它而不进行验证,则字符串可能是有害的。考虑一下您在SQL语句中插入的值、文件名、eval中使用的片段(无论如何都不应该使用它们)
您基本上可以说这些字符串都是以某种方式执行的或在执行中使用的。
如果您从用户处获得输入,并且在这些情况下未经验证就使用该输入,那么您将面临风险
在if语句中(我假设您谈论的是字符串比较,比如
if(userInput===='whatever')
),这根本不是问题。在这种情况下,您只是比较数据,没有执行任何操作。不要信任任何用户生成的数据,包括url参数、查询参数、post数据、cookie甚至请求头
最简单的建议是:始终过滤输入并清理输出。不要信任任何用户生成的数据,包括url参数、查询参数、post数据、cookie甚至请求标题
最简单的建议是:始终过滤输入并清理输出。基本上,信任用户输入从来都不是一个选项。它来自哪里并不重要;HTML表单、所有HTTP请求及其标题、Cookie以及您可以想到的其他内容
如果您要使用的数据来自用户输入,那么请清理、验证、检查并确保您得到了所需的数据,并且不会以任何方式损害您的应用程序。基本上,信任用户输入从来都不是一个选项。它来自哪里并不重要;HTML表单、所有HTTP请求及其标题、Cookie以及您可以想到的其他内容 如果您要使用的数据来自用户输入,那么请清理、验证、检查并确保您得到了所需的数据,并且不会以任何方式损害您的应用程序