我正在我的网站上创建博客引擎。没有什么花哨。用户将注册一些基本信息,包括评论本身就是这个问题的问题。
在评论字段中,用户可以写一些文字,但目前没有什么可以阻止他写任何有害的东西,这会在用评论渲染时弄乱页面。
所以我想知道完成这三项任务的最简单方法是什么(希望.NET中内置的东西:) :)
<a>
,<b>
等标签,以便用户可以格式化他的文字,并提供链接。答案 0 :(得分:1)
我最好的建议是使用维基代码或公告板代码(BBCode)。
在我的一个个人项目中的一些自定义开发中,我使用的是一个名为“Codekicker BBCode”的Codeplex项目,它是一个解析器引擎,因此您可以在评论组成文本输入中使用BBCode:
扩展其语义并添加更多BBCode标签并不难,但开箱即用的标签足以满足您的要求 - 或者我猜是这样! -
我从未集成过维基代码引擎,但您可以下载Screwturn Wiki的源代码并删除维基代码解析器并在您自己的解决方案中使用 - 它是GPL,不是吗?如果您留下作者通知和许可证,您可以这样做! - :
您可以允许标准的XHTML / HTML元素,但最好使用这样的解析器。
我的观点是维基代码解析器比BBCode好,但也许你的要求和BBCode可以有一个很好的婚姻:)
答案 1 :(得分:1)
您希望确保在向数据库添加值时使用正确的方法以避免SQL注入,我建议您阅读How To Protect from SQL Injeciton in ASP.NET上的MSDN文章。
如果您希望允许用户自行格式化代码,则可以打开漏洞利用程序,而且您肯定不得不多考虑一次。首先,您要确保每个标记都有匹配的结束标记。因为如果有人写道:<strong>Hello!
你不希望之后的所有文字都是粗体。
为了帮助您实现这一点,您可以使用几个不同的库,这些是我推荐的两个方法/库:
您可以使用允许用户编写[粗体]文本[/ bold]的方法,然后在其他所有内容上使用名为Html Encoding
的内容。所以如果你写下面的内容:
<strong>this will not be in bold</strong>[bold]But this will![/bold]
输出可能是:
<strong>this will not be bold</strong>
但这会!
按照以下步骤操作:
关于换行符,您需要将\r\n
替换为<br />
,请检查Html Agility Pack或使用String.Replace
。