哪种类型的输入最不容易受到跨站点脚本(XSS)和SQL注入攻击。
PHP,HTML,BBCode等我需要知道我正在帮助朋友设置的论坛。
答案 0 :(得分:6)
(我刚刚在评论中发布了此内容,但似乎有些人认为选择列表,单选按钮等不需要消毒。)
不要指望单选按钮是安全的。您仍应该清理服务器上的数据。人们可以在本地计算机上创建一个html页面,并创建一个与单选按钮同名的文本框,并将该数据发回。
更高级的用户可以使用像WebScarab之类的代理,只需在将参数发布回服务器时调整参数。
一个好的经验法则是总是使用参数化的SQL语句,总是在将其放入HTML之前转义用户生成的数据。
答案 1 :(得分:3)
我们需要了解您的情况。易受伤害如何?你应该经常做的一些事情:
我永远不会执行用户提供的php。 BBCode / UBBCode很好,因为它们被转换为语义正确的html,尽管你可能想要查看与格式错误的图像标签相关的XSS漏洞。如果您允许HTML输入,则可以将某些元素列入白名单,但这将是一个容易出错的复杂方法。所以,考虑到上述所有情况,我会说使用一个好的现成的 BBCode 库是你最好的选择。
答案 2 :(得分:3)
他们都不是。服务器上预期的所有数据都可以由具有知识和动力的人操纵。您希望人们使用的浏览器和表单只是向服务器/脚本提交数据的几种有效方法之一。
请熟悉XSS主题及相关问题
答案 3 :(得分:2)
任何类型的布尔值。
您甚至可以轻松过滤无效输入。
- )
答案 4 :(得分:1)
有许多BB代码解析器可以清理HTML等的输入。如果没有可用的软件包,那么您可以查看一个开源论坛软件包以获得指导。
BB代码很有意义,因为它是论坛的“标准”。
答案 5 :(得分:0)
最不易受攻击的输入是“非输入”。
你问的是正确的问题吗?
答案 6 :(得分:0)
为了奥丁的缘故,请不要消毒输入。不要害怕用户在表单中输入他们想要的内容。
用户输入本质上不安全。接受的答案会导致像我的银行那样的网络界面,奥莱利先生无法开户,因为他的名字中有非法的人物。什么是不安全的总是如何使用用户输入。
避免SQL注入的正确方法是使用预准备语句。如果您的数据库抽象层不允许您使用它们,请严格使用正确的转义函数(myslq_escape等)。 防止XSS攻击的正确方法绝不像striptags()。逃避一切 - 在PHP中,像htmlentities()这样的东西就是你要找的东西,但它取决于你是将输出字符串作为HTML文本,HTML属性或Javascript内部等的一部分输出。使用正确的工具为了正确的背景。并且永远不要直接将用户的输入打印到页面。
最后,看看Web应用程序的前十大漏洞,并做正确的事情来防止它们。 http://www.applicure.com/blog/owasp-top-10-2010