安全测试那些事儿......
一、 验证码
public void verifyCode(HttpSession session,HttpServletResponse resp){
// 验证码图片的宽度。
int width = 60;
// 验证码图片的高度。
int height = 20;
// 验证码字符个数
int codeCount = 4;
int x = 0;
// 字体高度
int fontHeight;
int codeY;
char[] codeSequence = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'Q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
x = width / (codeCount + 1);
fontHeight = height - 2;
codeY = height - 4;
BufferedImage buffImg = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g = buffImg.createGraphics();
// 创建一个随机数生成器类
Random random = new Random();
// 将图像填充为白色
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
// 创建字体,字体的大小应该根据图片的高度来定。
Font font = new Font("Fixedsys", Font.PLAIN, fontHeight);
// 设置字体。
g.setFont(font);
// 画边框。
// g.setColor(Color.BLACK);
// g.drawRect(0, 0, width - 1, height - 1);
// 随机产生160条干扰线,使图象中的认证码不易被其它程序探测到。
g.setColor(Color.BLACK);
for (int i = 0; i < 1; i++) {
int x2 = random.nextInt(width);
int y2 = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x2, y2, x + xl, y2 + yl);
}
// randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
StringBuffer randomCode = new StringBuffer();
int red = 0, green = 0, blue = 0;
int iRandom = 0, iMinRandom = 0, iMaxRandom = 0;
// 随机产生codeCount数字的验证码。
for (int i = 0; i < codeCount; i++) {
// 得到随机产生的验证码数字。
iRandom = random.nextInt(36);
if(iRandom < iMinRandom){
iMinRandom = iRandom;
}
if(iRandom > iMaxRandom){
iMaxRandom = iRandom;
}
if(i == codeCount -1){
if(iMinRandom > 25){
iRandom = iMinRandom - 10;
}
if(iMaxRandom < 26){
iRandom = 26 + random.nextInt(10);
}
}
String strRand = String.valueOf(codeSequence[iRandom]);
// 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
red = random.nextInt(255);
green = random.nextInt(255);
blue = random.nextInt(255);
// 用随机产生的颜色将验证码绘制到图像中。
g.setColor(new Color(red, green, blue));
g.drawString(strRand, (i + 1) * x, codeY);
// 将产生的四个随机数组合在一起。
randomCode.append(strRand);
}
// 将四位数字的验证码保存到Session中。
session.setAttribute("validateCode", randomCode.toString());
ServletOutputStream sos;
try {
sos = resp.getOutputStream();
ImageIO.write(buffImg, "jpeg", sos);
sos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
二、 登陆成功后重置JSESSIONID
HttpSession session = req.getSession(false);
Map<String,Object> tempMap = new HashMap();
if ( session != null ) {
//首先将原session中的数据转移至一临时map中
Enumeration<String> sessionNames = session.getAttributeNames();
while(sessionNames.hasMoreElements()){
String sessionName = sessionNames.nextElement();
tempMap.put(sessionName, session.getAttribute(sessionName));
}
session.invalidate(); // 废弃旧的 session
}
session = req.getSession(true);
for(Map.Entry<String, Object> entry : tempMap.entrySet()){
session.setAttribute(entry.getKey(), entry.getValue());
}
三、去掉tomcat默认管理页面
修改webapp目录下的root重命名或者是删除
四、去掉tomcat版本
去掉catalina.jar包中的版本信息,具体文件路径:org\apache\catalina\util\ServerInfo.properties
安全测试那些事儿......相关推荐
- 关于 A/B 测试那些事儿
A/B 测试,听起来好像就是在 A 和 B 两个方案中择优选择一个的样子. 但是判断的标准是什么,如何实现一直没有思考过. 正好最近在做数据分析方面的工作,稍有接触,Mark 一下. A/B test ...
- 关于AB测试那些事儿
嘉宾介绍 陈冠诚,Testin副总裁.Testin A/B测试业务负责人.师从欧洲科学院院士Per Stenstrom教授,发表过6篇大数据国际论文和8项国际专利,为美图.宜人财富等企业搭建了A/B测 ...
- 开发到底要不要自己做测试?
圈里有这样一个关于测试的段子:每个程序员在修改代码时都希望有测试,但在写代码时,都不想写测试. 希望有测试,是因为测试可以给我们带来安全感.不想写测试,一方面,很多人会觉得麻烦,另一方面,也是更重要的 ...
- 为什么程序员做测试其实是有优势的?这是我听过最....的话
圈里有这样一个关于测试的段子:每个程序员在修改代码时都希望有测试,但在写代码时,都不想写测试. 希望有测试,是因为测试可以给我们带来安全感.不想写测试,一方面,很多人会觉得麻烦,另一方面,也是更重要的 ...
- 测试工程师:“ 这锅我不背 ” ,面对灵魂三问,如何回怼?
前言 在一个周末的早餐我被同事小周叫出去跑步,本想睡个懒觉,但是看他情绪不太稳定的样子,无奈艰难爬起陪他去跑步. 只见她气冲冲的对着河边大喊:真是冤枉啊!!! 原来是在工作中被莫名其妙背锅,见她又气氛 ...
- 【测试甩锅大攻略】产品出了问题,谁都不想担这个责任,那么锅由谁来背呢?
目录 测试人员 新人 特殊情况不能离职的人 顶头上司甩锅 同事之间甩锅 新人老人之间甩锅 产品出了问题,谁都不想担这个责任,那么锅由谁来背呢? 测试人员 在以往的工作中发现,只要线上有bug,或者有哪 ...
- Unity学习之Human fall flat创意工坊地图制作
Unity学习笔记之Human fall flat 主要参考<人类一败涂地>官方教程 Unity版本 详细教程获取 开始工程导入 素材包介绍 界面介绍 工具简介 常用组件简介 多人游戏组件 ...
- 基于嘉立创双层板E5071C的低成本TRL校准
基于嘉立创双层板&E5071C的低成本TRL校准 嘉立创双层板材特性 TRL校准件设计 TRL校准件总览 直通 反射 传输线 负载匹配 E5071C TRL校准 新增校准件 直通 匹配负载 定 ...
- python遇到天猫反爬虫_selenium 淘宝登入反爬虫解决方案(亲测有效)
前言 目前在对淘宝进行数据爬取的时候都会碰到,登入时的滑块问题,无论是手动还是脚本都不成功.这里的很重要一个原因是很多的网站都对selenium做了反爬虫机制.接下来是笔者参考网上的网友们的方法亲自测 ...
最新文章
- 3G突破必须打破漫游费的限制
- svn +nginx
- 神策数据汽车行业解决方案重磅上线,全面赋能车企数字化转型
- 也谈SSDT Hook(一)
- 打印5列五颗星_13个Excel快捷打印技巧,让你熟练掌握打印机操作
- 如何用SAP ABAP编程语言实现一个简单的区块链模型
- LL-verilog 1000HZ分频为1HZ使用三个十位计数器合成
- unix查询内存使用率_Elasticsearch高级调优方法论之——根治慢查询
- 有监督学习 —— KNN算法
- 百度 java基础_java基础知识点整理
- 在中國古代是沒有這種現象的
- linux 无线网络特别慢,Ubuntu 16.04 LTS连接无线上网慢的解决
- 如何使用MSGEQ7音频频谱分析仪芯片
- host头攻击漏洞修复
- python selenium ActionChains类与鼠标的模拟事件
- Python利用bs4批量抓取网页图片并下载保存至本地
- OBS直播时编码器、码率控制器、分辨率帧率是什么以及如何向第三方推流
- Buying Hay 购买干草 完全背包
- java导出csv,实现单元格内换行
- linux 下文件夹无法删除(报:Device or resource busy),然后进入文件夹也无法创建新的文件夹(Permission denied)
热门文章
- 华为交换机批量加入 Vlan 方法
- 深入OpenJDK源码-偏向锁的延时生效如何实现的
- 易语言服务器端口总被占用,易语言检测端口是否被占用的代码
- 7-156 输出大写英文字母 (15 分)
- mac 绑定阿里企业邮箱
- Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图
- 未来杯区域赛奖项争夺进入倒计时,专家评审团阵容揭晓
- ——大牛很通俗地介绍《信号与系统》
- python网易云爬虫网络技术的意义_Python3爬虫实战之网易云音乐
- 深入理解MySQL(2):详谈索引结构