如何在经典的asp中防止跨站脚本?
我想防止客户端输入,如html标签和任何脚本标签在经典的asp文本框。
我正在尝试使用方法Server.HTMLEncode "Name= Server.HTMLEncode(Request.Form("txtName"))“,但是仍然像"Raj”一样在数据库中插入数据,并且这些数据也是按原样在文本框中检索的,但是我想在插入和检索时删除标签。
发布于 2021-07-03 14:23:32
您可以使用正则表达式完全删除HTML:
Function Remove_HTML(ByVal str)
Dim RegEx : Set RegEx = New RegExp
RegEx.Pattern = "<(?:[^>=]|='[^']*'|=""[^""]*""|=[^'""][^\s>]*)*>"
RegEx.Global = True
RegEx.Multiline = True
RegEx.IgnoreCase = True
Remove_HTML = RegEx.Replace(str,"")
Set RegEx = Nothing
End Function你是说Server.HTMLEncode没有对尖括号进行编码?这没有任何意义。你需要发布你的代码。
从数据库中插入、更新或选择用户提交的数据时,应始终在将数据包含在任何数据库命令中之前对其进行检查和清理。
如果您返回用户原始输入,例如在搜索页面上(为search_term找到的x result(s) ),则在返回之前应始终使用Server.HTMLEncode,如果您也填充搜索框输入或文本区域,请不要忘记使用它。
https://stackoverflow.com/questions/68191789
复制相似问题