我正在我的网站上创建博客引擎。没有什么花哨。用户将注册一些基本信息,包括评论本身,即该问题的问题。
在评论字段中,用户可以编写一些文本,但目前没有什么可以阻止他在那里编写任何有害的内容,这会在使用评论渲染页面时弄乱页面。
所以我想知道完成这三个任务的最简单方法是什么(希望 .NET 内置一些东西:))
- 确保没有有害的 html 被写入文本框中来运行脚本,或者在添加注释后使页面呈现给所有用户一个错误。
- 我仍然想接受像这样的标签
<a>
,<b>
等等,以便用户可以格式化他的文本,并提供链接。
- 消息中的任何换行符都应受到尊重,以便注释在呈现为 html 时看起来与用户写入时相同。目前,作为 html 内容的标准,所有换行符都会被忽略。
您希望确保在向数据库添加值时使用正确的方法以避免 SQL 注入,有一篇 MSDN 文章如何防止 ASP.NET 中的 SQL 注入 http://msdn.microsoft.com/en-us/library/ff648339.aspx我推荐你阅读。
当您希望允许用户自行格式化代码时,您就会受到攻击,并且您肯定必须对此进行多次思考。首先,您要确保每个标签都有匹配的结束标签。因为如果有人写:<strong>Hello!
您不希望之后的所有文本都是粗体。
为了帮助您实现这一目标,您可以使用几个不同的库,这是我推荐的两种方法/库:
- Html 敏捷包 http://htmlagilitypack.codeplex.com/
- ASP.NET BB代码 http://eksith.wordpress.com/2009/01/14/aspnet-bbcode-c/
您可以使用一种方法,允许用户编写[粗体]文本[/粗体],然后使用称为Html Encoding
在其他一切上。所以如果你写下以下内容:
<strong>this will not be in bold</strong>[bold]But this will![/bold]
输出可能是:
<strong>this will not be bold</strong>
但这会的!
您可以通过执行以下步骤来实现此目的:
- HTML 对文本进行编码
- 用正确的 HTML 替换您的 BB 代码标签([粗体] 等)
关于您需要替换的换行符\r\n
with <br />
,检查 Html Agility Pack 或使用String.Replace
.
您可能还想阅读Jeffs 关于安全 HTML 和 XSS 的博客文章 https://blog.stackoverflow.com/2008/06/safe-html-and-xss/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)