2

我在网页上使用富文本编辑器。.NET 具有阻止发布 HTML 标记的功能,因此我添加了一个 JavaScript 片段以在发布之前将尖括号更改为一对字符和别名。别名在服务器上用必要的尖括号替换,然后存储在数据库中。除了 XSS,解决这个问题的常用方法是什么。(即有更好的方法吗?)

如果您对 XSS(跨站点脚本)有意见,我相信这会对某人有所帮助。

4

3 回答 3

4

实际上有一种方法可以关闭该“功能”。这将允许用户发布他们想要的任何字符,并且无需使用 Javascript 将字符转换为别名。请参阅本文以禁用请求验证。这意味着您必须自己进行验证,但是从您的帖子的声音来看,这似乎就是您想要做的事情。您也可以按照此处的说明在每页禁用它。

于 2008-09-15T01:25:32.570 回答
3

我认为最安全的方法是不允许用户使用您的 WISYWIG 创建标签。也许使用类似本网站或此处提供的降价编辑器之类的东西。将是另一种方法。

还要保留 Page 指令 ValidateRequest=true ,它应该停止在请求中发送标记,当它出现时你当然需要处理这个错误。人们将始终能够使用诸如Tamper data之类的 firefox 扩展将标签注入到请求中,但 ValidateRequest=true 至少应该阻止 ASP.NET 接受它们。

Jeff 最近在这里发表了一篇关于 XSS 攻击的直截了当的帖子。它还涉及使您的 cookie 为 HttpOnly,这是对 cookie 盗窃的半防御。祝你好运!

于 2008-09-15T01:28:50.707 回答
1

我的第一条评论是避免使用 JavaScript 来更改尖括号。绕过这个就像在浏览器中禁用 JavaScript 一样简单。几乎所有服务器端语言都有一些实用方法可以将一些 HTML 字符转换为对应的实体。例如,PHP 使用 htmlentities(),我确信 .NET 有一个等效的实用程序方法。至少,您可以对尖括号、括号和双引号进行正则表达式替换,这将使您朝着安全的解决方案迈进一大步。

于 2008-09-15T00:59:14.800 回答