浏览器WYSIWYG最佳实践

时间:2008-09-15 00:36:51

标签: asp.net javascript wysiwyg

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

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

3 个答案:

答案 0 :(得分:3)

实际上有一种方法可以关闭“功能”。这将允许用户发布他们想要的任何字符,并且不需要使用Javascript将字符转换为别名。请参阅此文章了解disabling request validation。这意味着你必须自己进行验证,但是从帖子的声音来看,无论如何,这似乎都是你要做的。您也可以按照the instructions here每页停用它。

答案 1 :(得分:3)

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

同时保持Page指令ValidateRequest = true,这应该停止在请求中发送标记,你当然需要在它出现时处理这个错误。人们将始终能够使用firefox扩展(如Tamper data)以任意方式将标记注入请求,但ValidateRequest = true应该至少阻止ASP.NET接受它们。

杰夫最近在这里发表了关于XSS攻击的直接帖子。它还说明了你的饼干HttpOnly,这是一个防止cookie被盗的半防御。祝你好运!

答案 2 :(得分:1)

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