Security 安全性(XSS)的Javascript重写Request.Form(";foo";)
我有一些源代码中有一些跨站点脚本漏洞。当浏览器将数据发送到正在执行服务器端Javascript和经典ASP(IIS 7.0)的服务器时,不会发生输入验证 我的问题是,有没有一种方法可以覆盖Security 安全性(XSS)的Javascript重写Request.Form(";foo";),security,asp-classic,xss,jscript,Security,Asp Classic,Xss,Jscript,我有一些源代码中有一些跨站点脚本漏洞。当浏览器将数据发送到正在执行服务器端Javascript和经典ASP(IIS 7.0)的服务器时,不会发生输入验证 我的问题是,有没有一种方法可以覆盖Request.Form(“foo”)object/method,这样我也可以调用一个清理函数,从而摆脱被禁止的JS/HTML?我不想在任何地方对每个文件执行查找和替换请求。调用表单。我希望有更优雅的东西 任何建议都将不胜感激。我认为您不能更改请求。表格成员 作为部分解决方案,您可以创建一个代码,该代码将首先在
Request.Form(“foo”)
object/method,这样我也可以调用一个清理函数,从而摆脱被禁止的JS/HTML?我不想在任何地方对每个文件执行查找和替换请求。调用表单。我希望有更优雅的东西
任何建议都将不胜感激。我认为您不能更改请求。表格成员
作为部分解决方案,您可以创建一个代码,该代码将首先在每个页面上运行(例如,使用include
指令),该指令循环Request.Form
、Request.QueryString
等,如果发现可疑代码,则终止代码执行(Response.End
)。这个解决方案是局部的,因为它并没有真正清理输入,它只是在发现可疑文本时停止执行
另一个选项:创建一个数组,与Request.Form
并行。使用与Request.Form中相同的成员填充此数组,但这次已清理。然后,快速查找并替换整个代码库,并将Request.Form
更改为您的自定义数组变量。有一种方法可以将整个Request
对象替换为另一个COM对象,但这是一种疯狂的解决方案,并且仍然要求所有使用Form
的ASP文件都包含一个通用的top include文件。无法在应用程序级别全局替换请求
对象或其成员之一
问题的正确解决方案是执行这种全局替换,尽管您声明“不希望在任何地方对每个文件执行查找和替换”
尽管存在大量.asp文件,但成本只不过是编一个简单的程序在文件夹树中打开每个asp文件,添加一个包含行并替换Request.Form
您是否尝试过var oldRequestForm=Request.Form;Request.Form=function(param){returnyoursanization(oldRequestForm(param))}
。没用。@JuanMendes不,不可能。尝试搜索并全部替换,而不是查找并替换。全局查找并替换没有什么不优雅的地方,Op不想使用查找/替换,我认为这是一个更好的选择。我喜欢你的建议,在页面顶部的Request.Form
上循环一个include