我有一个textarea和am using ckeditor,允许用户输入数据并点击上传。这会将此数据的html保存到mysql数据库表中,以显示在单独的网页上
关于人们发布的内容,我需要担心什么?我是否需要在前端或后端添加任何验证,以确保它们不会发布危险脚本等。
验证发布内容的最简单方法是存储并将其放回客户端以便稍后显示。
答案 0 :(得分:2)
我是否需要在前端或后端添加任何验证以确保 他们没有发布危险的脚本等
不,你不应该担心这个。就使用参数化查询来存储数据以避免SQL注入而言,关系数据库并不关心您向其投入何种文本。
当您尝试在网页上显示此数据时,可能会出现问题。目前,您应该确保它是正确的HTML编码。
对于剃刀:
@...
对于WebForms(ASP.NET 4.0)
<%: ...
对于WebForms(在ASP.NET 4.0之前)
<%= Html.Encode(...
或者以上所有:
Html.DisplayFor(x => x.SomePropertyOftheViewModel)
验证发布内容的最简单方法是什么 存储并放回客户端以便稍后显示。
用于存储数据的参数化查询(仅当您使用关系数据库时)和HTML编码才能显示回来。
您可能还会发现following blog post对Microsoft Anti-Xss library很有用。
答案 1 :(得分:2)
据我所知,ckeditor不提供任何内置的xss保护(你应该总是在服务器端验证这些东西)。除了Darin Dimitrov回答我可以说在我最近的项目中我需要将用户输入显示为html,并且不对其进行编码。如果你面临类似的情况(你几乎肯定是 - 通常没有使用ckeditor和忽略格式的点) - 看看: http://refactormycode.com/codes/333-sanitize-html 如果是这种情况 - 只需使用帖子中的Sanitize方法清理html,然后就可以按原样显示它。