1

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

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

4

7 回答 7

6

(我刚刚在评论中发布了这个,但似乎有些人认为选择列表、单选按钮等不需要清理。)

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

更高级的用户可以使用WebScarab之类的代理,并在将参数发送回服务器时对其进行调整。

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

于 2008-10-01T19:20:52.253 回答
3

我们需要更多地了解您的情况。脆弱怎么办?你应该经常做的一些事情:

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

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

于 2008-10-01T18:48:35.030 回答
3

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

请熟悉 XSS 主题及相关问题

于 2008-10-01T19:16:22.983 回答
2

任何类型的布尔值。

您甚至可以很容易地过滤无效输入。

;-)

于 2008-10-01T19:08:12.877 回答
1

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

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

于 2008-10-01T18:51:30.140 回答
0

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

你在问正确的问题吗?

于 2008-10-01T19:02:03.547 回答
0

为了 Odin 的缘故,请不要清理输入。不要害怕用户在您的表单中输入他们想要的任何内容。

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

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

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

于 2012-05-28T21:57:28.727 回答