数据输入安全性和html标签

时间:2013-04-24 22:57:06

标签: javascript jquery asp.net-mvc security

我正在使用asp.net mvc,我有一个弹出模式窗口,用户可以在其中输入一些文本并将其保存到数据库中。此文本也会显示在屏幕上,从数据库中读取。

对于初学者,我想确保数据库中不显示有害标签 - 我是否需要对输入进行编码/解码?目前,输入alert('hello')会保存到数据库中,再次显示时会显示为文本 - 所以我觉得我很好,但是想要确认。

一个问题,我也在用户保存时使用此文本,使用javascript,将其添加到页面上的div并使用上面的文本,这会触发弹出警报。我怎么能阻止这个?

我正在使用不同的文字拉丁语,西里尔语等,所以不要任何不寻常的字符!

2 个答案:

答案 0 :(得分:0)

你试过标签吗? MVC非常适合这种类型的标准验证,并且往往会将标记折叠为<script>,除非该字段明确标有[AllowHtml]

重要的是区分alert('hello')不包含任何危险,并且会很好地进入数据库。

您直接将此文本作为可执行文件放在javascript 是一个问题。如果不是alert('hello')而是ajax调用,或者我最喜欢的有趣测试document.write(),该怎么办?当你说你使用javascript将文本添加到div时,它不应该执行该文本。将其保留为字符串,并确保在您担心它不是字符串的任何地方使用.toString()

答案 1 :(得分:0)

您应该应用一个删除所有非法字符的递归。用户不需要的任何东西都应该是非法的。如果只使用字母和数字,请删除所有特殊字符。确保递归地应用此。完成后,您应HTML encode所有输入,以使其(大部分)无害。

不要只依赖HTML编码来保证您的安全。有办法打败它,攻击者必须应对的层次越多,对他/她来说就越困难。

这个问题可能对HTML编码有帮助:HtmlEncode from Class Library