LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

经典ASP将url编码的字符串转为HTML实体避免XSS攻击

freeflydom
2026年11月4日 16:25 本文热度 62

:经典ASP将url编码的字符串转为HTML实体避免XSS攻击


Dim s

s = url_content


' ═══ 第 1 步:% 自身先实体化(防 %253C → %3C → < 绕过)═══

s = Replace(s, "%25", "&#37;", 1, -1, 1)


' ═══ 第 2 步:危险字符 → 命名 HTML 实体 ═══

s = Replace(s, "%3C", "&lt;",   1, -1, 1)   ' <

s = Replace(s, "%3E", "&gt;",   1, -1, 1)   ' >

s = Replace(s, "%22", "&quot;", 1, -1, 1)   ' "

s = Replace(s, "%27", "&#39;",  1, -1, 1)   ' '

s = Replace(s, "%26", "&amp;",  1, -1, 1)   ' &

s = Replace(s, "%60", "&#96;",  1, -1, 1)   ' `


' ═══ 第 3 步:其余可读字符 → 数字实体(浏览器渲染后依然是原字符)═══

s = Replace(s, "%3B", "&#59;",  1, -1, 1)   ' ;

s = Replace(s, "%3A", "&#58;",  1, -1, 1)   ' :

s = Replace(s, "%2F", "&#47;",  1, -1, 1)   ' /

s = Replace(s, "%3F", "&#63;",  1, -1, 1)   ' ?

s = Replace(s, "%23", "&#35;",  1, -1, 1)   ' #

s = Replace(s, "%3D", "&#61;",  1, -1, 1)   ' =

s = Replace(s, "%20", "&#32;",  1, -1, 1)   ' 空格

s = Replace(s, "%2B", "&#43;",  1, -1, 1)   ' +

s = Replace(s, "%2C", "&#44;",  1, -1, 1)   ' ,

s = Replace(s, "%28", "&#40;",  1, -1, 1)   ' (

s = Replace(s, "%29", "&#41;",  1, -1, 1)   ' )

s = Replace(s, "%21", "&#33;",  1, -1, 1)   ' !

s = Replace(s, "%24", "&#36;",  1, -1, 1)   ' $

s = Replace(s, "%2A", "&#42;",  1, -1, 1)   ' *

s = Replace(s, "%40", "&#64;",  1, -1, 1)   ' @

s = Replace(s, "%7E", "&#126;", 1, -1, 1)   ' ~

s = Replace(s, "%5B", "&#91;",  1, -1, 1)   ' [

s = Replace(s, "%5D", "&#93;",  1, -1, 1)   ' ]

s = Replace(s, "%7B", "&#123;", 1, -1, 1)   ' {

s = Replace(s, "%7D", "&#125;", 1, -1, 1)   ' }

s = Replace(s, "%5E", "&#94;",  1, -1, 1)   ' ^

s = Replace(s, "%7C", "&#124;", 1, -1, 1)   ' |

s = Replace(s, "%5C", "&#92;",  1, -1, 1)   ' \

s = Replace(s, "%5F", "&#95;",  1, -1, 1)   ' _

s = Replace(s, "%2D", "&#45;",  1, -1, 1)   ' -

s = Replace(s, "%2E", "&#46;",  1, -1, 1)   ' .

s = Replace(s, "%0A", "&#10;",  1, -1, 1)   ' 换行

s = Replace(s, "%0D", "&#13;",  1, -1, 1)   ' 回车

s = Replace(s, "%09", "&#9;",   1, -1, 1)   ' Tab

测试从url拿到的攻击内容:

%3bhttp%3a%2f%2fx%2f%3cscript%3ealert%281%29%3c%2fscript%3e

替换结果:

&#59;http&#58;&#47;&#47;x&#47;&lt;script&gt;alert&#40;1&#41;&lt;&#47;script&gt;

浏览器渲染看到:

;http://x/<script>alert(1)</script>

✅ 完全可读

✅ < > 在源码里是 &lt; &gt;,浏览器只当文本,不会执行

✅ 所有 % 都消失了,下游即使 URLDecode 也解不出东西

​


该文章在 2026/11/4 16:29:15 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-2  粤公网安备44030602007207号