Javascript 数据输入安全性和html标记

Javascript 数据输入安全性和html标记,javascript,jquery,asp.net-mvc,security,Javascript,Jquery,Asp.net Mvc,Security,我正在使用asp.NETMVC,我有一个弹出模式窗口,用户可以在其中输入一些文本,然后保存到数据库中。该文本也会显示在屏幕上,从数据库中读取 首先,我想确保数据库中不会显示有害的标签——我需要对输入进行编码/解码吗?目前,输入警报(“hello”)将保存到数据库中,当再次显示时,它将显示为文本-所以我认为我可以,但希望得到确认 一个问题是,当用户保存此文本时,我也会使用javascript将其添加到页面上的div中,并使用上面的文本触发弹出警报。我怎样才能防止这种情况 我正在使用不同的文本拉丁语

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

首先,我想确保数据库中不会显示有害的标签——我需要对输入进行编码/解码吗?目前,输入警报(“hello”)将保存到数据库中,当再次显示时,它将显示为文本-所以我认为我可以,但希望得到确认

一个问题是,当用户保存此文本时,我也会使用javascript将其添加到页面上的div中,并使用上面的文本触发弹出警报。我怎样才能防止这种情况


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

你试过标签吗?MVC非常适合这种类型的标准验证,并且倾向于将标记折叠到
脚本中
,除非该字段显式标记为
[allowtml]

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


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

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

不要只依靠HTML编码来确保安全。有很多方法可以打败它,而且攻击者需要对抗的层次越多,他/她就越难对付

这个问题可能对HTML编码有帮助: