浏览器所见即所得的最佳做法

时间:2020-03-05 18:53:07  来源:igfitidea点击:

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

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

解决方案

回答

我的第一句话是避免使用JavaScript更改尖括号。绕过此操作就像在浏览器中禁用JavaScript一样简单。几乎所有的服务器端语言都有一些实用程序方法,可以将一些HTML字符转换为对应的实体字符。例如,PHP使用htmlentities(),并且我确定.NET具有等效的实用程序方法。至少,我们可以使用正则表达式替换尖括号,括号和双引号,这将使我们在寻求安全解决方案方面大有帮助。

回答

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

回答

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

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

Jeff最近在这里发表了有关XSS攻击的简单文章。它还可以使cookie成为HttpOnly,这是防止cookie盗窃的半防御方法。祝你好运!