一、 验证码

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

安全测试那些事儿......相关推荐

  1. 关于 A/B 测试那些事儿

    A/B 测试,听起来好像就是在 A 和 B 两个方案中择优选择一个的样子. 但是判断的标准是什么,如何实现一直没有思考过. 正好最近在做数据分析方面的工作,稍有接触,Mark 一下. A/B test ...

  2. 关于AB测试那些事儿

    嘉宾介绍 陈冠诚,Testin副总裁.Testin A/B测试业务负责人.师从欧洲科学院院士Per Stenstrom教授,发表过6篇大数据国际论文和8项国际专利,为美图.宜人财富等企业搭建了A/B测 ...

  3. 开发到底要不要自己做测试?

    圈里有这样一个关于测试的段子:每个程序员在修改代码时都希望有测试,但在写代码时,都不想写测试. 希望有测试,是因为测试可以给我们带来安全感.不想写测试,一方面,很多人会觉得麻烦,另一方面,也是更重要的 ...

  4. 为什么程序员做测试其实是有优势的?这是我听过最....的话

    圈里有这样一个关于测试的段子:每个程序员在修改代码时都希望有测试,但在写代码时,都不想写测试. 希望有测试,是因为测试可以给我们带来安全感.不想写测试,一方面,很多人会觉得麻烦,另一方面,也是更重要的 ...

  5. 测试工程师:“ 这锅我不背 ” ,面对灵魂三问,如何回怼?

    前言 在一个周末的早餐我被同事小周叫出去跑步,本想睡个懒觉,但是看他情绪不太稳定的样子,无奈艰难爬起陪他去跑步. 只见她气冲冲的对着河边大喊:真是冤枉啊!!! 原来是在工作中被莫名其妙背锅,见她又气氛 ...

  6. 【测试甩锅大攻略】产品出了问题,谁都不想担这个责任,那么锅由谁来背呢?

    目录 测试人员 新人 特殊情况不能离职的人 顶头上司甩锅 同事之间甩锅 新人老人之间甩锅 产品出了问题,谁都不想担这个责任,那么锅由谁来背呢? 测试人员 在以往的工作中发现,只要线上有bug,或者有哪 ...

  7. Unity学习之Human fall flat创意工坊地图制作

    Unity学习笔记之Human fall flat 主要参考<人类一败涂地>官方教程 Unity版本 详细教程获取 开始工程导入 素材包介绍 界面介绍 工具简介 常用组件简介 多人游戏组件 ...

  8. 基于嘉立创双层板E5071C的低成本TRL校准

    基于嘉立创双层板&E5071C的低成本TRL校准 嘉立创双层板材特性 TRL校准件设计 TRL校准件总览 直通 反射 传输线 负载匹配 E5071C TRL校准 新增校准件 直通 匹配负载 定 ...

  9. python遇到天猫反爬虫_selenium 淘宝登入反爬虫解决方案(亲测有效)

    前言 目前在对淘宝进行数据爬取的时候都会碰到,登入时的滑块问题,无论是手动还是脚本都不成功.这里的很重要一个原因是很多的网站都对selenium做了反爬虫机制.接下来是笔者参考网上的网友们的方法亲自测 ...

最新文章

  1. 3G突破必须打破漫游费的限制
  2. svn +nginx
  3. 神策数据汽车行业解决方案重磅上线,全面赋能车企数字化转型
  4. 也谈SSDT Hook(一)
  5. 打印5列五颗星_13个Excel快捷打印技巧,让你熟练掌握打印机操作
  6. 如何用SAP ABAP编程语言实现一个简单的区块链模型
  7. LL-verilog 1000HZ分频为1HZ使用三个十位计数器合成
  8. unix查询内存使用率_Elasticsearch高级调优方法论之——根治慢查询
  9. 有监督学习 —— KNN算法
  10. 百度 java基础_java基础知识点整理
  11. 在中國古代是沒有這種現象的
  12. linux 无线网络特别慢,Ubuntu 16.04 LTS连接无线上网慢的解决
  13. 如何使用MSGEQ7音频频谱分析仪芯片
  14. host头攻击漏洞修复
  15. python selenium ActionChains类与鼠标的模拟事件
  16. Python利用bs4批量抓取网页图片并下载保存至本地
  17. OBS直播时编码器、码率控制器、分辨率帧率是什么以及如何向第三方推流
  18. Buying Hay 购买干草 完全背包
  19. java导出csv,实现单元格内换行
  20. linux 下文件夹无法删除(报:Device or resource busy),然后进入文件夹也无法创建新的文件夹(Permission denied)

热门文章

  1. 华为交换机批量加入 Vlan 方法
  2. 深入OpenJDK源码-偏向锁的延时生效如何实现的
  3. 易语言服务器端口总被占用,易语言检测端口是否被占用的代码
  4. 7-156 输出大写英文字母 (15 分)
  5. mac 绑定阿里企业邮箱
  6. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图
  7. 未来杯区域赛奖项争夺进入倒计时,专家评审团阵容揭晓
  8. ——大牛很通俗地介绍《信号与系统》
  9. python网易云爬虫网络技术的意义_Python3爬虫实战之网易云音乐
  10. 深入理解MySQL(2):详谈索引结构