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