哪类输入最不容易受到攻击?

时间: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之前对其进行转义。