密码找回逻辑漏洞—Web安全深度剖析(5)

发表于:2015-5-13 10:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:张炳帅    来源:51Testing软件测试网原创

  (51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。)
  为了避免这样的错误,可使用Java异常处理机制,改善后的代码如下:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个整数:");
String str = sc.nextLine();  // 接收键盘记录
int num = 0;
try {
num = Integer.parseInt(str);  // 将字符串转换为整数
} catch (Exception e) {
System.out.println("类型转换异常!");
}
System.out.println("您输入的是:" + num);
}
  这样即使程序再出错,也不会直接崩溃,再次输入字符串"Hello"进行测试,结果如图10-18所示。
  可能有人会说:使用异常处理是比较合理的做法,怎么可能造成0元购买商品漏洞呢?请读者注意一下图 10-18,程序的执行流程最后显示的是"您输入的是0",程序虽然没有退出,但这个0可能会影响之后的代码执行结果。
  有些支付页面会做一些这样的异常处理措施,但如果没有正确地使用异常处理,则可能会隐藏安全隐患。
  
图10-18  异常处理
  逻辑漏洞的例子数不胜数,这里关键是看程序员的思维,很多程序都是闭源的,我们看不到其源码,只能"盲目"地修改HTPP请求参数测试,也就是Fuzz Testing。
  常见的支付逻辑漏洞场景还有商品价格修改、物流运费修改等。
本文选自《Web安全深度剖析》第十章,本站经电子工业出版社和作者的授权。
版权声明:51Testing软件测试网获电子工业出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
绕过授权验证—Web安全深度剖析(4)
33/3<123
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号