当前位置: 首页 > news >正文

网站开发设计南邮西安发布最新通知

网站开发设计南邮,西安发布最新通知,做网站需要源码吗,北京知名网站建设公司思路 1、优化正则表达式 2、正则表达式无法优化的话,可以考虑限制匹配次数,或者限制匹配时间 限制 匹配次数 public class CountedCharSequence implements CharSequence {private final CharSequence charSequence;private long count;public Counte…

思路

1、优化正则表达式
2、正则表达式无法优化的话,可以考虑限制匹配次数,或者限制匹配时间

限制 匹配次数

public class CountedCharSequence implements CharSequence {private final CharSequence charSequence;private long count;public CountedCharSequence(CharSequence charSequence, long count) {this.charSequence = charSequence;this.count = count;}@Overridepublic String toString() {return charSequence.toString();}@Overridepublic int length() {return charSequence.length();}@Overridepublic char charAt(int index) {if (index <= 0) {throw new IllegalArgumentException("Regex match over max " + count + " times");}count--;return charSequence.charAt(index);}@Overridepublic CharSequence subSequence(int start, int end) {return charSequence.subSequence(start, end);}
}

模拟Dos攻击

String str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";long start = System.nanoTime();
Pattern.compile("^(a+)+$").matcher(str).matches();
System.out.println(((System.nanoTime() - start)) + " nano seconds");执行用时
1399200 nano seconds

超过 1亿 就会报错

long start1 = System.nanoTime();try {Pattern.compile("^(a+)+$").matcher(new CountedCharSequence(str, 100_000_000)).matches();
} catch (Exception e) {System.out.println(e.getMessage());
}System.out.println(((System.nanoTime() - start1)) + " nano seconds");执行用时
Regex match over max 100000000 times
601800 nano seconds

限制 匹配时间

import java.util.regex.Pattern;public final class TimedCharSequence implements CharSequence {private final CharSequence sequence;private final long timestamp;public TimedCharSequence(CharSequence sequence, long nanoseconds) {this.sequence = sequence;this.timestamp = System.nanoTime() + nanoseconds;}@Overridepublic String toString() {return sequence.toString();}@Overridepublic int length() {return sequence.length();}@Overridepublic char charAt(int index) {if (timestamp < System.nanoTime()) {throw new IllegalStateException("Regex match timeout");}return sequence.charAt(index);}@Overridepublic CharSequence subSequence(int start, int end) {return sequence.subSequence(start, end);}
}

模拟Dos攻击

String str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";long start = System.nanoTime();
Pattern.compile("^(a+)+$").matcher(str).matches();
System.out.println(((System.nanoTime() - start)) + " nano seconds");执行用时:
1385400 nano seconds

超过 给定时间间隔就报错

long start1 = System.nanoTime();try {Pattern.compile("^(a+)+$").matcher(new TimedCharSequence(str, 10_000)).matches();
} catch (Exception e) {System.out.println(e.getMessage());
}System.out.println(((System.nanoTime() - start1)) + " nano seconds");执行用时:
Regex match timeout
123100 nano seconds

[Ref]

[Ref] 限制正则表达式执行时间

http://www.dinnco.com/news/12905.html

相关文章:

  • 网站更换备案优化搜索引擎
  • 广东省建设八大员网站推广点击器
  • 做网站要学编程麽青岛快速排名
  • 哈尔滨市做网站优化优化方案英语
  • 苍南做网站小网站
  • 书店网站的建设dw如何制作网页
  • b2c电子商务网站分析搜狗友链交换
  • 品牌网站有哪些内容百度网站流量统计
  • 宁波专业网站营销seo排名赚app
  • 北京企业网站设计行业关键词词库
  • 网站的制作步骤搜索网站有哪些
  • 如何查询一个网站的注册信息郑州网络推广方案
  • 想把自己做的网站放到网上电脑软件推广平台
  • 购物网站详细设计威海seo
  • 集团公司网站源码php网店代运营骗局
  • 济南机关建设网站怎么做网络广告推广
  • wordpress项目seo搜索引擎优化报价
  • 阿里巴巴网站是用什么技术做的win7优化工具
  • 淘宝客个人网站怎么做百度首页推广广告怎么做
  • 邯郸做wap网站找谁电商的推广方式有哪些
  • 做画册找什么网站小升初最好的补课机构排行榜
  • 服装 公司 网站建设搜索引擎优化的完整过程
  • 个人做的网站有什么危险电商seo是指
  • 网站做推广赚钱项目seo教程自学网
  • 佛山南海网站开发谷歌seo是什么职业
  • 成都网站维护多少钱培训学校加盟
  • 爱做网站软件百度爱采购官方网站
  • 网站建设完成的时间推广技术
  • 网站优化内容有哪些外贸如何做网站推广
  • 武汉网站建设 网站制作优化大师卸载不了