哪种类型的输入最不容易受到攻击


Which Type of Input is Least Vulnerable to Attack?

哪种类型的输入最不容易受到跨站点脚本(XSS)和SQL注入攻击。

PHP、HTML、BBCode 等。我需要知道我正在帮助朋友建立的论坛。

我刚刚在评论中发布了这个,但似乎有些人的印象是选择列表、单选按钮等不需要消毒。

不要指望单选按钮是安全的。您仍应清理服务器上的数据。人们可以在他们的本地计算机上创建一个 html 页面,并创建一个与您的单选按钮同名的文本框,并回发该数据。

更高级的用户可以使用像WebScarab这样的代理,并在参数回发到服务器时调整参数。

一个好的经验法则是始终使用参数化的 SQL 语句,并始终在将用户生成的数据放入 HTML 之前对其进行转义。

我们需要更多地了解您的情况。 脆弱如何? 您应该始终执行的一些操作:

  • 在将字符串存储在数据库中之前对其进行转义以防止 SQL 注入
  • HTML编码字符串时将其从未知来源打印回用户,以防止恶意HTML/javascript

我永远不会执行用户提供的php。 BBCode/UBBCode很好,因为它们被转换为语义正确的html,尽管您可能希望查看与格式不正确的图像标签相关的XSS漏洞。 如果您允许 HTML 输入,则可以将某些元素列入白名单,但这将是一种容易出错的复杂方法。 因此,考虑到上述所有内容,我会说使用一个好的现成BBCode库将是你最好的选择。

他们都不是。 服务器预期的所有数据都可以由具有知识和动机的人操作。 您希望人们使用的浏览器和表单只是向服务器/脚本提交数据的几种有效方法之一。

请熟悉XSS和相关问题的主题

  • http://shiflett.org/articles/input-filtering
  • http://shiflett.org/blog/2007/mar/allowing-html-and-preventing-xss

任何一种布尔值。

您甚至可以非常轻松地过滤无效输入。

;-)

有很多BB代码解析器可以清理HTML等输入。 如果没有一个软件包,那么您可以查看其中一个开源论坛软件包以获取指导。

BB代码是有意义的,因为它是论坛的"标准"。

最不容易受到攻击的输入是"非输入"。

你问的问题对吗?

看在奥丁的份上,请不要对输入进行消毒。不要害怕用户在您的表单中输入他们想要的任何内容。

用户输入并非本质上不安全。被接受的答案导致了像我银行这样的网络界面,O'Reilly先生无法开设账户,因为他的名字中有非法字符。不安全的始终是您如何使用用户输入。

避免 SQL 注入的正确方法是使用预准备语句。如果您的数据库抽象层不允许使用这些函数,请严格使用正确的转义函数(myslq_escape et al)。防止XSS攻击的正确方法从来都不是像striptags()这样的东西。转义一切 - 在PHP中,像htmlentities()这样的东西是你要找的,但这取决于你是将字符串输出为HTML文本的一部分,HTML属性,还是Javascript内部等。在正确的上下文中使用正确的工具。并且永远不要只是将用户的输入直接打印到页面上。

最后,看看 Web 应用程序的十大漏洞,并采取正确的措施来防止它们。 http://www.applicure.com/blog/owasp-top-10-2010