javascript利用正则表达式取得URL的参数、并转化为JSON对象

本文详细介绍了如何使用正则表达式从URL中提取参数,包括单个参数和所有参数的获取方法,并提供了JavaScript实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用正则表达式取得URL的参数

1、取得单个参数的方法

[javascript]  view plain copy
  1. // URL参数取得  
  2. function getQueryString(name) {  
  3.     var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");  
  4.     var r = window.location.search.substr(1).match(reg);  
  5.     if (r!=null)  
  6.         return unescape(r[2]);  
  7.     return "";  
  8. }  


 2、取得所有参数的方法(JSON)

 

[javascript]  view plain copy
  1.  //王德封:取得URL参数、并传化成JSON  
  2. ACWS.getQueryJson = function(){  
  3.     var ret = {};//定义数组  
  4.     window.location.search.substr(1).replace(/(\w+)=(\w+)/ig, function(a, b, c){ret[b] = unescape(c);});  
  5.     return ret;  
  6. }  
  7. ACWS.URL_PARAM=ACWS.getQueryJson();  
  8. //王德封: URL参数取得(改造并保留原有接口)  
  9. function getQueryString(name) {  
  10.     return ACWS.URL_PARAM[name];  
  11. }  
<think>好的,我需要帮助用户了解如何为WAF和IPS产品编写正则表达式。首先,我要理清楚用户的需求,他们可能希望知道编写这类正则表达式的方法和示例。接下来,我需要考虑WAF和IPS的主要功能,比如检测和阻止恶意请求,如SQL注入、XSS攻击等。因此,正则表达式需要能够识别这些攻击的特征。 首先,我得回忆一下常见的攻击模式。例如,SQL注入可能包含单引号、分号、注释符等。XSS攻击可能包含<script>标签或javascript:协议。然后,我需要将这些模式转化为正则表达式,同时考虑绕过技巧,比如大小写混合、编码字符等。因此,正则表达式需要不区分大小写,且能够匹配多种编码形式。 接下来,我应该分步骤讲解编写方法。比如,第一步是识别攻击特征,第二步是处理编码绕过,第三步是优化性能避免回溯问题,第四步是结合上下文,第五步是测试和验证。每个步骤都需要具体的例子,比如处理SQL注入的正则表达式示例,如何避免贪婪匹配等。 还要注意用户提到的引用内容,引用1提到WAF分析请求和SQLmap绕过方法,引用3提到与IDS/IPS集成。可能需要结合这些内容,说明正则表达式如何与其他安全系统配合使用。例如,如何从威胁情报中更新正则表达式规则。 然后,我需要提供一些示例,比如检测SQL注入的正则,检测XSS的正则,以及如何优化它们。同时要提到工具,如Regex101,用于测试正则的有效性。另外,需要提醒用户注意性能,避免过于复杂的正则导致系统负载过高。 最后,要确保回答结构清晰,分点说明方法和示例,自然地融入引用内容。可能还需要生成相关问题,比如如何测试正则的有效性,或者如何与日志分析结合。这些相关问题需要符合用户之前提供的格式,放在最后部分。 检查是否有遗漏点,比如处理多语言攻击、Unicode编码,或者考虑不同协议的情况。此外,是否需要提到白名单和黑名单的结合使用?可能作为高级技巧提及。还要注意正则表达式的语法正确性,避免错误,比如义字符的正确使用。 总结一下,回答的结构应该是先介绍方法,分步骤详细说明每个要点,给出示例,然后提供注意事项和工具推荐,最后生成相关问题。确保使用正确的中文术语,引用相关的参考文献,特别是用户提供的引用1和3。</think>### 为WAF/IPS编写正则表达式的方法及示例 #### 一、正则表达式设计原则 1. **识别攻击特征** 根据攻击模式(如SQL注入、XSS)提取关键字符或语句。例如: - SQL注入常用`'`、`;`、`UNION SELECT` - XSS常用`<script>`、`javascript:`、`onerror=` 示例:检测SQL注入的简单正则表达式 ```regex ('|;|UNION\s+SELECT) ``` 2. **处理编码绕过** 攻击者可能使用URL编码、Unicode或大小写混合绕过检测。正则表达式需覆盖多种编码形式: ```regex (?i)(<script|javascript:|onerror=) # 不区分大小写 (%3Cscript|%6A%61%76%61%73%63%72%69%70%74) # 匹配URL编码 ``` 3. **避免过度回溯** 使用非贪婪匹配`.*?`和原子分组`(?>)`优化性能。例如检测XSS攻击时: ```regex <([^>]+)>.*?(alert|eval)\( # 避免贪婪匹配导致性能问题 ``` 4. **结合上下文限制** 限制匹配范围,如仅在参数值中检测: ```regex \bname=\S*?(union select|sleep\(\d+\))\S*?\b ``` --- #### 二、典型示例 1. **SQL注入检测** 检测常见注入语句(如`UNION SELECT`、`DROP TABLE`): ```regex (?i)\b(union\s+select|drop\s+table|xp_cmdshell)\b ``` **优化版**:包含编码字符和注释符 ```regex (\%27|\')(\s*?(--|#|\/\*)) ``` 2. **XSS攻击检测** 匹配HTML标签或事件处理器: ```regex (<script|<\/script>|onmouseover=|javascript:\w+) ``` **增强版**:包含SVG/HTML5新标签和编码 ```regex (?i)(<iframe|<\?import|javascript:\w+)|(%3Cscript|%0Aeval\() ``` 3. **路径遍历防护** 阻止`../`等目录跳模式: ```regex (\.\.\/|\.\.\\|%2e%2e%2f) ``` --- #### 三、测试与优化 1. **工具验证** 使用[Regex101](https://regex101.com/)测试正则表达式逻辑,确保匹配攻击样本且避免误报[^2]。 2. **性能压测** 通过长字符串测试(如`AAAA...A`)检查正则引擎是否超时。 3. **动态更新规则** 结合威胁情报(如新漏洞的Payload特征)更新正则表达式库[^3]。 --- #### 四、注意事项 1. **避免过度匹配** 精确限定边界(如`\b`),减少误报正常请求。 2. **多协议兼容** 适配HTTP头、URL参数JSON等多场景,例如检测HTTP头注入: ```regex (?i)(Content-Length:\s*0|Host:\s*[^\r\n]+\.evil\.com) ``` 3. **与系统集成** 将正则规则与WAF的拦截策略、IPS的流量分析模块联动[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值