java web安全小习惯

作者: littlebin404 | 来源:发表于2019-07-10 00:05 被阅读0次

在java web编程中,要注意一些安全问题,sql注入、任意文件上传、文件下载漏洞、数据库密码泄露等,可以多参考owasp top 10的常见漏洞,结合fortify白盒测试工具中漏扫结果,养成一个良好的编程习惯!下面分享一下开发的一些小习惯:

防范sql注入:

在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。一定要做到:

1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;

2.使用参数化(PreparedStatement);

小习惯:1.StringEscapeUtils.escapeSql(request.getParameter("id"))//StringEscapeUtil是common-lang包中的一个类,其中escapseSql方法可以起到对参数的sql注入有效过滤;

2.在进行sql语句执行时,要对sql语句进行示例话,避免进行sql拼接:

PreparedStatement pstmt = null;// 定义数据库操作对象

ResultSet rs = null;

sql = "select * from user where id=?";

pstmt = conn.prepareStatement(sql);// 实例化操作

pstmt.setString(1, id);

rs=pstmt.executeQuery();// 取得结果

因为sql注入只对sql语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理;而不再对sql语句进行解析,准备,因此也就避免了sql注入!

防范文件上传漏洞:

文件下载链接是程序员经常遇到的情景,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:

--验证文件类型、大小;

--对文件进行一定复杂的重命名;

--不要暴露文件上传后的路径;

小习惯:

String[] strArray = fileName.split("\\.");

intsuffixIndex = strArray.length -1;

strArray[suffixIndex];获取到文件名后缀进行白名单判断;

upload.setFileSizeMax(30*1024*1024);//单文件30M

upload.setSizeMax(50*1024*1024);//设置总文件大小50M,

String uuid = UUID.randomUUID().toString();//将文件进行复杂重命名,使用uuid可以避免文件覆盖.

String savePath = this.getServletContext().getRealPath("/WEB-INF/upload/" + uuid);//放到/WEB-INF/upload/安全目录下。

防范文件下载漏洞:

例如,先向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后会开始执行下载方法,最后将该文件名对应的文件response给浏览器完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞,如localhost:8080/XX/filedown?filename=../../web.xml,../这些特殊字符就可能造成文件信息泄露!

小习惯:

// 过滤特殊字符

public static String StringFilter(String str) throws PatternSyntaxException {

// 只允许字母和数字 // String regEx ="[^a-zA-Z0-9]";

// 清除掉所有特殊字符

String regEx = "[`~!@#$%^&*()+=|{}':;',\\[\\]<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";

Pattern p = Pattern.compile(regEx);

Matcher m = p.matcher(str);

return m.replaceAll("").trim();

}

数据库密码泄露:

很多程序员喜欢把数据库密码写在代码中,存在反编译被攻击者窃取的风险,我们可以将代码写在配置文件中!

好了,今天的编程小习惯就分享到这里,让我们做一名具有安全编程思想的快乐码农呗!!!

相关文章

  • java web安全小习惯

    在java web编程中,要注意一些安全问题,sql注入、任意文件上传、文件下载漏洞、数据库密码泄露等,可以多参考...

  • Java Web 安全之代码审计

    信息安全的75%发生在Web应用而非网络层。本文内容主要以Java Web安全-代码审计为中心展开。 小编整理了一...

  • web项目目录介绍

    1.web-info: WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以...

  • JSP 基础

    maven 导入 WEB-INF 目录 WEB-INF 是 Java 应用的安全目录,所谓安全就是客户端无法访问,...

  • JavaWeb简介

    WEB-INF目录结构 1.WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端...

  • 【SSM框架x7】ssm-crud项目分析

    一、WEB-INF WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问...

  • Java Web项目WEB-INF下页面 404 原因

    Java Web项目WEB-INF下页面 404 原因 做项目为了安全起见,可以把页面放入WEB-INF目录下,因...

  • Java Web项目WEB-INF下页面 404 原因

    Java Web项目WEB-INF下页面 404 原因做项目为了安全起见,可以把页面放入WEB-INF目录下,因为...

  • Java web 系统安全笔记

    Java web 系统安全笔记 最近在解决公司一些接口的安全隐患问题,总结了一下笔记。例子以 Java 语言做演示...

  • 小猿圈Web安全之Java应用

    互联网发展到现在真的是更新迭代好多次,从最开始的iOS、安卓到现在的java、python、linux、区块链、w...

网友评论

    本文标题:java web安全小习惯

    本文链接:https://www.haomeiwen.com/subject/ykjqkctx.html