Php 我应该清理传递的每个表单变量吗?

Php 我应该清理传递的每个表单变量吗?,php,sql,mysql,database,security,Php,Sql,Mysql,Database,Security,我有一个有很多字段的表单 该操作设置为查询mysql的php页面 我应该用mysql\u real\u escape\u string清理每个变量吗? 或者我可以忽略消毒下拉列表和收音机吗 另外,除了mysql\u real\u escape\u string,我还应该做些什么来防止攻击 谢谢在SQL语句中使用字符串之前,您只需要使用来转义字符串,以防止SQL注入攻击 此外,当从数据库中取出数据并将其写入HTML时,应考虑使用或防止跨站点脚本攻击。 也必须检查选择和单选按钮。任何人都可以创建自己

我有一个有很多字段的表单

该操作设置为查询mysql的php页面

我应该用
mysql\u real\u escape\u string
清理每个变量吗? 或者我可以忽略消毒下拉列表和收音机吗

另外,除了
mysql\u real\u escape\u string
,我还应该做些什么来防止攻击

谢谢

在SQL语句中使用字符串之前,您只需要使用来转义字符串,以防止SQL注入攻击


此外,当从数据库中取出数据并将其写入HTML时,应考虑使用或防止跨站点脚本攻击。

也必须检查选择和单选按钮。任何人都可以创建自己的HTML表单并将其发布到脚本中。Firefox ExtensionWebDeveloper工具栏甚至有一个将选择转换为文本输入的选项

您还可以检查发布的数据是否只包含正确的值。例如,如果您有一个单选按钮,请确保发布的表单只包含一个有效值


当然,您应该只对要放入mysql的变量运行mysql\u real\u escape\u字符串。如果保存到文件中,使用命令行或其他任何东西,则有更多适当的功能和解决方案。

< P>从客户端发送的任何变量都不能被认为是安全和有效的。如果您在查询中使用它们,您应该始终清理它们。

一般来说,在浏览器之外形成POST请求并不重要,因此可以绕过下拉列表(例如)对可能值施加的任何限制


因此,您应该始终将用户数据视为恶意和容易出错的数据,并在服务器端尽可能多地进行验证和保护。

您只需清理不希望攻击者劫持的字段即可。数据可以来自任何来源,而不仅仅是您的页面
mysql\u real\u escape\u string
适用于将连接到查询中的任何值,但我会“清理”所有内容。对我来说,“清理”不仅仅意味着处理注入攻击,它还包括任何字段验证(sting长度、数字、有效日期、空等)。

另一堆无知的答案。卡姆兰,你像磁铁一样吸引它

您必须了解mysql\u real\u escape\u string与表单和收音机、检查和消毒无关。
而且它不能阻止攻击

它只是一个字符串转义函数。它转义将作为字符串数据插入SQL查询字符串的数据

SQL查询是一个小程序。使用它自己的语法。你必须遵循这个语法,不是因为“攻击”,而是因为它只是一个语法。当然,这些规则并不依赖于数据源!单选按钮、html表单或浏览器-一切都不重要

它只对字符串有效。没有数字或标识符

以下是我对如何处理SQL查询的回答:

我认为最好使用htmlspecialchars()。strip_标记并非总是按预期工作。无论是htmlspecialchars还是mysql_real_escape_字符串,在任何情况下都不能起到神奇的作用,请查看没有从客户端发送的变量的情况。记住,mysql_real_escape_字符串只有在结果sql语句中用单引号分隔转义值时才可以安全使用。更好的方法是:忘记字符串转义,只使用绑定的sql参数。