哪类输入最不容易受到攻击?
时间:2020-03-06 14:59:31 来源:igfitidea点击:
哪种类型的输入最不容易受到跨站点脚本(XSS)和SQL注入攻击的攻击。
PHP,HTML,BBCode等。我需要了解一个我正在帮助朋友建立的论坛。
解决方案
我们需要更多地了解情况。脆弱如何?我们应该始终做的一些事情:
- 在将字符串存储在数据库中之前转义字符串以防止SQL注入
- 从未知来源将其打印回用户时,HTML会对字符串进行编码,以防止恶意html / javascript
我永远不会执行用户提供的php。 BBCode / UBBCode很好,因为它们可以转换为语义正确的html,尽管我们可能希望研究与格式错误的图像标签有关的XSS漏洞。如果允许HTML输入,则可以将某些元素列入白名单,但这将是一种容易出错的复杂方法。因此,鉴于上述所有情况,我想说,使用良好的即用型BBCode库将是最佳选择。
有许多BB代码解析器可以清理HTML等的输入。如果没有可用的软件包,则可以查看其中一个开源论坛软件包以获取指导。
BB代码很有意义,因为它是论坛的"标准"。
最不容易受到攻击的输入是"非输入"。
我们在问正确的问题吗?
任何类型的布尔值。
我们甚至可以很容易地过滤无效输入。
;-)
他们都不是。拥有知识和动力的人可以操纵服务器上期望的所有数据。我们希望人们使用的浏览器和表单只是将数据提交到服务器/脚本的几种有效方法之一。
请熟悉XSS主题和相关问题
- http://shiflett.org/articles/input-filtering
- http://shiflett.org/blog/2007/mar/allowing-html-and-preventing-xss
(我只是在评论中发布了此内容,但似乎有些人对选择列表,单选按钮等不需要进行清理。)
不要指望单选按钮是安全的。我们仍然应该清理服务器上的数据。人们可以在其本地计算机上创建一个html页面,并创建一个与单选按钮同名的文本框,然后将该数据回发。
更高级的用户可以使用WebScarab之类的代理,并在将参数发布回服务器时对其进行调整。
一个好的经验法则是,始终使用参数化的SQL语句,并始终在将用户生成的数据放入HTML之前对其进行转义。