如何在Java开发中,更加安全的编码?这是一个问题

本文探讨了在Java开发中确保安全编码的重要性,包括输入校验、异常处理、I/O操作、序列化等方面的安全措施,提供了如SQL注入、XSS攻击、命令执行防范等具体的防护策略,强调了业务逻辑安全和运行环境的安全配置。
摘要由CSDN通过智能技术生成

写在前面

目前处于互联网时代,任何信息的传播都离不开网络的环境。而Java又作为互联网时代的第一语言,如何更规范的编码,使在程序开发中更加安全的运用,就是老生常谈的互联网安全问题之一。

今天,笔者就为大家带来整理的Java开发中的安全编码问题,只是笔者个人见解,有哪里不完善的地方,请各位大佬多多指出,笔者和大家一起进步学习~~~

如何在Java开发中,更加安全的编码?这是一个问题

 

输入校验

编码原则:针对各种语言本身的保留字符,做到数据与代码相分离。

SQL 注入防范

严重性高,可能性低。

(1) 参数校验,拦截非法参数(推荐白名单):

public String sanitizeUser(String username) {
    return Pattern.matches("[A-Za-z0-9_]+", username)
        ? username : "unauthorized user";
}

(2) 使用预编译:

String sql = "UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setBigDecimal(1, 285500.00);
statement.setInt(2, 30015800);

XSS防范

严重性中,可能性高。防范方法有:

(1) 输入输出校验(推荐白名单);

(2) org.apache.commons.lang 工具包处理;

(3) 富文本可用 owasp antisamp 或 java html sanitizer 处理;

(4) ESAPI 处理:

// HTML 实体
ESAPI.encoder().encodeForHTML(data);

// HTML 属性
ESAPI.encoder().encodeForHTMLAttribute(data);

// JavaScript
ESAPI.encoder().encodeForJavaSceipt(data);

// CSS 
ESAPI.encoder().encodeForCSS(data);

// URL
ESAPI.encoder().encodeForURL(data);

代码注入/命令执行防范

严重性高,可能性低。

(1) 参数校验,拦截非法参数(推荐白名单);

(2) 不直接执行用户传入参数:

if("open".equals(request.getParameter("choice"))) {
    Runtime.getRuntime().exec("your
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值