如何修复ASP代码拼接查询字符串参数导致的XSS攻击漏洞?
XSS漏洞修复方案
该漏洞的核心成因是未做任何过滤转义,直接将用户可控的查询参数x拼接进输出的JavaScript代码中,攻击者可通过构造特殊参数闭合原有字符串、JS语句,插入任意恶意脚本执行。
具体可按以下方案修复:
- 优先对插入到URL参数位置的用户输入做URL编码。ASP内置的
Server.URLEncode()方法会将单引号、尖括号、&等特殊字符转义为URL编码格式,既不会破坏原有URL参数结构,也不会被浏览器解析为可执行脚本。
修复后的代码示例:
Dim x : x = Request.QueryString.Item("x") Response.Write "document.location.href = 'abc.asp?go=" & Server.URLEncode(x) & "&blnJavaOn=y';" & chr(13)
- 新增输入校验逻辑,结合参数
x的业务使用场景限制合法输入范围。比如如果x为纯数字参数,就只允许传入0-9的字符;如果是固定格式的字符串,就做格式匹配校验,不符合规则的直接拦截请求。 - 若业务场景需要允许
x携带特殊字符,除URL编码外,还需补充JavaScript字符串转义处理:自定义转义函数将单引号转义为\'、反斜杠转义为\\、换行符转义为\n,避免恶意输入闭合JS字符串插入代码。
经过上述处理后,攻击者传入的<script>alert()</script>这类恶意内容会被转义为纯参数文本,不会被浏览器解析执行,可完全堵住该XSS漏洞。
内容的提问来源于stack exchange,提问作者Srinivas
相关产品推荐
相关产品推荐

