经过多次尝试编写一个能够以PHP格式整理/验证$ _POST [“input”] 的代码后,我不得不一直询问它,因为每次尝试都不起作用我期望。我真的尝试了很多,我刚开始用2个月前的编码运动(html,css,bootstrap,wordpress,php)。我希望您可以告诉我,正如您所看到的,对PHP表单进行整理的最常用或“最佳”方式是什么。
我已经重新编写了一些OOP PDO表单验证,因为我将其集成到新的主页中,因此我无法运行,因为我的OOP技能= 0。
它是用类构建的,但我没有看到任何准备好的语句,这让我感到惊讶,因为准备好的语句在网络中被崇拜。
哪种方式更好,你能告诉我为什么吗?
我希望你能回答我的问题并解释一下如何以“亲的方式”处理它,在最好的情况下是安全的,因为这对我来说是一个障碍。
感谢您的帮助。
答案 0 :(得分:0)
首先,您不应该在任何上下文中连接验证和“清理”。这是两个完全不同的问题,which, alas, confuse too many people。
验证确实必须应用于表单数据,并且没有通用的方法来执行此操作。只需使用您的常识,业务逻辑需求和框架指南。
虽然“消毒”是另一回事。即使这个词本身也是PHP人员最大的错误,总是被误用和混淆。
“消毒”的最佳方法不是完全消毒。因为
你应该格式化,而不是“消毒”。根据当前特定目的地的规则格式化。
要格式化SQL查询的数据,您必须使用预准备语句 要格式化其他目的地的数据,您必须遵守其规则。而且,不是“发表形式”,而是所有数据,尽管有其来源。
答案 1 :(得分:0)
答案"你的常识"绝对正确。
所以你应该首先验证你的表单(clientside),有很多小的验证库,例如:http://rickharrison.github.io/validate.js/
发布时,您必须检查此数据是否与您预期的一样。 电子邮件只是一封电子邮件,名称只是一个没有XSS或SQL注入的字符串......
所以它取决于目的地,如上面的答案所说。
要过滤某些帖子值,例如:http://php.net/manual/en/function.filter-var.php
您还可以针对sql Injection和XSS使用完整的框架或库。您应该使用MySQLi预处理语句来对抗XSS,例如:HTMLPurifier http://htmlpurifier.org/
这些只是一些例子,如果您有兴趣,我建议您阅读本页:https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet