课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
代码安全性是我们在学习软件编程开发技术的时候都需要重点关注的问题之一,而今天我们就一起来了解一下,java代码安全都有哪些要点。
1:编写简单而强大的Java代码
漏洞喜欢隐藏在复杂代码中,因此在不牺牲功能的情况下使代码尽可能简单。在代码中公开尽可能少的信息,隐藏实施细节,支持可维护和安全的代码。下面三个技巧将大大有助于编写安全的Java代码:
充分利用Java的访问修饰符。为类,方法及其属性声明访问级别,可以设为private的所有内容都应该为private。
避免过度使用反射和内省。在某些情况下,应该使用这种高级技术,但是在大多数情况下,您应该避免使用它们。使用反射消除了强类型化,可能会给代码引入漏洞和不稳定性。将类名与字符串进行比较容易出错,并且很容易导致名称空间冲突。
始终定义尽可能小的API和接口。解耦组件并使它们在尽可能小的区域内交互。即使您的应用程序的某个区域出现漏洞,其他区域也将是安全的。
2:避免使用Java自带的序列化
序列化接受远程输入,并将其转换为完全赋值的对象。它省去了构造函数和访问修饰符,并允许未知数据流成为JVM中的运行代码。Java序列化从根本上来说是不安全的。
尽可能避免在Java代码中使用自带的序列化/反序列化。可以考虑使用JSON或YAML之类的序列化格式,并且永远不要公开接收并作用于序列化流的不受保护的网络请求端点。
3:永远不要公开未加密的凭证或PII
很多的应用,当用户在浏览器中输入密码时,密码将以纯文本格式发送到您的服务器。正确的做法是:先通过单向密码对密码进行加密,然后再将其持久保存到数据库中,然后在每次与该值进行比较时再次进行加密保存。
密码规则适用于所有个人身份信息(PII):信用卡,社会保险号等。委托给您应用程序的任何个人信息都应得到高程度的保护。
数据库中未加密的凭据或PII是一个巨大的安全漏洞,正在等待攻击者发现。同样,切勿将原始凭据写入日志,或以其他方式传输到文件或网络。密码与密钥分开保存。
4:使用已知和经过测试的库
尽可能使用已知的可靠库和框架。从密码哈希到RESTAPI授权,都要谨慎的选择三方库。对于web应用程序安全性,SpringSecurity已经是事实上的标准。它提供了广泛的选择和灵活性,以适应任何应用程序体系结构,并且融合了多种安全方法。
5:不要对外部输入抱有幻想
无论是来自用户输入表单,数据存储区还是远程API,对于任何外部输入都不要放松警惕。
SQL注入和跨站点脚本(XSS)是由于处理外部输入错误而引起的常见攻击。每当您收到输入时,都应该对其进行检查和校验。
6:始终使用PreparedStatement来处理SQL参数
每当您构建一条SQL语句时,都有可能被插入一段可执行的SQL代码。始终使用java.sql.PreparedStatement类创建SQL是一个好习惯。对于NoSQL存储(如MongoDB)也存在类似的功能。绝大部分的ORM框架,都支持该功能。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。