当前位置:   article > 正文

网络安全最新如何在Java开发中,更加安全的编码?这是一个问题,2024年最新腾讯网络安全开发面试记录

网络安全最新如何在Java开发中,更加安全的编码?这是一个问题,2024年最新腾讯网络安全开发面试记录

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

// URL

ESAPI.encoder().encodeForURL(data);

代码注入/命令执行防范

严重性高,可能性低。

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

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

if(“open”.equals(request.getParameter(“choice”))) {

Runtime.getRuntime().exec(“your command…”);

}

(3) 及时更新升级第三方组件:

比如Struts、Spring、ImageMagick等。

日志伪造防范

严重性低,可能性高。

(1) 不要log用户可控的信息;

(2) 输入参数校验(推荐白名单):

// 处理回车、换行符

Pattern p = Pattern.compile(“%0a|%0d0a|\n|\r\n”);

Matcher m = p.matcher(data);

dest = m.replaceAll(“”);

(3) 使用 Log4j2。

XML 外部实体攻击

严重性中,可能性中。

(1) 关闭内联 DTD 解析,使用白名单来控制允许使用的协议;

(2) 禁用外部实体:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

factory.setExpandEntityReferences(false);

(3) 过滤用户提交的 XML 数据:

比如 !DOCTYPE、<!ENTITY、SYSTEM、PUBLIC 等。

XML 注入防范

严重性中,可能性低。

(1) 教研用户输入(推荐白名单):

OutputFormat format = OutputFormat.createPrettyPrint();

(2) 使用安全的 XML 库(比如 dom4j)。

URL 重定向防范

严重性中,可能性低。

(1) 设置严格白名单及网络边界:

String url = request.getParameter(“url”);

String host = getHostFromUrl(url);

if(!validateHost(host)) {

return;

}

(2) 加入有效性验证的 Token;

(3) referer 适用于检测监控 URL 重定向、CSRF 等,多数场景下也可用作防范措施。

异常处理

====

编码原则:不要泄露详细异常信息。

敏感信息泄露防范

严重性低,可能性中。

屏蔽敏感信息示例:

catch(IOException e) {

System.out.println(“Invalid file”);

// System.out.println(“Error code: 0001”);

return;

}

保持对象一致性

严重性中,可能性低。

(1) 重排逻辑,使得产生异常的代码在改变对象状态的代码之前执行;

catch(Exception e) {

// revert

money -= PADDING;

return -1;

}

(2) 在出现异常导致操作失败的情况下,使用事务回滚机制;

(3) 在对象的临时拷贝上执行操作,成功后再提交给正式的对象;

(4) 回避修改对象的需求,尽量不去修改对象。

I/O 操作

=======

编码规则:可写的文件不可执行,可执行的文件不可写。

资源释放

严重性低,可能性高。

Java 垃圾回收器回自动释放内存资源,非内存资源需要开发人员手动释放,比如 DataBase,Files,Sockets,Streams,Synchronization 等资源的释放。

try {

Connection conn = getConnection();

Statement statement = conn.createStatement();

ResultSet resultSet = statement.executeQuery(sqlQuery);

processResults(resultSet);

} catch(SQLException e) {

// forward to handler

} finally {

if (null != conn) {

conn.close();

}

}

清除临时文件

严重性中,可能性中。

(1) 自动清除:

File tempFile = Files.createTempFile(“tempname”, “.tmp”);

try {

BufferedWriter writer = Files.newBufferedWriter(tempFile.toPath(),

StandardCharsets.UTF_8, StandardOpenOption.DELETE_ON_CLOSE)

// operate the file

writer.newLine();

} catch (IOException e) {

e.printStackTrace();

}

(2) 手动清除。

避免将 bufer 暴露给不可信代码

严重性中,可能性中。

wrap、duplicate 创建的 buffer 应该以只读或拷贝的方式返回:

Charbuffer buffer;

public Duplicator() {

buffer = CharBuffer.allocate(10);

}

/** 获取只读的 Buffer */

public CharBuffer getBufferCopy() {

return buffer.asReadOnlyBuffer();

}

任意文件下载/路径遍历防范

严重性中,可能性高。

(1) 校验用户可控的参数(推荐白名单);

(2) 文件路径保存到数据库,让用户提交文件对应的 ID 去下载文件:

<%

String filePath = getFilePath(request.getParameter(“id”));

download(filePath);

%>

(3) 判断目录和文件名:

if(!“/somedir/”.equals(filePath) || !“jpg”.equals(fileType)) {

return -1;

}

(4) 下载文件前做权限判断。

补充:禁止将敏感文件(如日志文件、配置文件、数据库文件等)存放在 web 内容目录下。

非法文件上传防范

严重性高,可能性中。

在服务器端用白名单方式过滤文件类型,使用随机数改写文件名和文件路径。

if(!ESAPI.validator().isValidFileName(

“upload”, filename, allowedExtensions, false)) {

throw new ValidationUploadException(“upload error”);

}

补充:如果使用第三方编辑器,请及时更新版本。

序列化/反序列化操作

==========

编码原则:不信任原则。

敏感数据禁止序列化

严重性高,可能性低。

使用 transient、serialPersistentFields 标注敏感数据:

private static final ObjectStreamField[] serialPersistentFields = {

new ObjectStreamField(“name”, String.class),

new ObjectStreamField(“age”, Integer.TYPE)

}

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以点击这里获取

不前!**

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-FvAv8OeT-1715287348501)]
[外链图片转存中…(img-vbE5ctNN-1715287348502)]
[外链图片转存中…(img-LctzBrDm-1715287348503)]
[外链图片转存中…(img-eDk90BVl-1715287348504)]
[外链图片转存中…(img-VYGTwvmy-1715287348504)]
[外链图片转存中…(img-SBDp1cEs-1715287348505)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以点击这里获取

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/574936
推荐阅读
相关标签
  

闽ICP备14008679号