哪种类型的输入是最容易受到跨站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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top