Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 安全性(XSS)的Javascript重写Request.Form(";foo";)_Security_Asp Classic_Xss_Jscript - Fatal编程技术网

Security 安全性(XSS)的Javascript重写Request.Form(";foo";)

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?我不想在任何地方对每个文件执行查找和替换请求。调用表单。我希望有更优雅的东西 任何建议都将不胜感激。我认为您不能更改请求。表格成员 作为部分解决方案,您可以创建一个代码,该代码将首先在

我有一些源代码中有一些跨站点脚本漏洞。当浏览器将数据发送到正在执行服务器端Javascript和经典ASP(IIS 7.0)的服务器时,不会发生输入验证

我的问题是,有没有一种方法可以覆盖
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