首页 » 软件开发 » Java篇:编写安全可靠程序的75条建议(建议方法代码编码常量)

Java篇:编写安全可靠程序的75条建议(建议方法代码编码常量)

乖囧猫 2024-07-24 05:58:30 0

扫一扫用手机浏览

文章目录 [+]

建议2:不要在客户端存储未经加密的敏感数据

建议3:为敏感可变类提供不可修改的包装器

建议4:确保安全敏感方法被调用时参数经过验证

Java篇:编写安全可靠程序的75条建议(建议方法代码编码常量) 软件开发
(图片来自网络侵删)

建议5:防止任意文件上传

建议6:正确地编码或转义输出

建议7:防止代码注入

建议8:防止XPath注入

建议9:防止LDAP注入

建议10:不要使用clone()方法来复制不可信的方法参数

建议11:不要使用Object.equals()来比较密钥

建议12:不要使用不安全的弱加密算法

建议13:使用散列函数存储密码

建议14:确保SecureRandom正确地选择随机数种子

建议15:不要依赖可以被不可信代码覆盖的方法

建议16:避免授予过多特权

建议17:最小化特权代码

建议18:不要将使用降低安全性检查的方法暴露给不可信代码

建议19:对细粒度的安全定义自定义安全权限

建议20:使用安全管理器创建一个安全的沙盒

建议21:不要让不可信代码误用回调方法的特权

防御式编程 通过这些建议,程序员可以编写出防御性的程序

建议22:最小化变量的作用域

建议23:最小化@SuppressWarnings注解的作用域

建议24:最小化类及其成员的可访问性

建议25:文档化代码的线程安全性

建议26:为方法的结果值提供反馈

建议27:使用多个文件属性识别文件

建议28:不要赋予枚举常量的序号任何特殊意义

建议29:注意数字提升行为

建议30:对可变参数的类型做编译时类型检查

建议31:不要把其值在以后版本里可能会发生变化的常量设置为public final

建议32:避免包之间的循环依赖

建议33:使用用户自定义的异常而非宽泛的异常类型

建议34:尽量从系统错误中优雅恢复

建议35:发布接口前请谨慎设计

建议36:编写对垃圾收集机制友好的代码

可靠性 提高Java应用程序可靠性和安全性的建议

建议37:不要在子作用域里遮蔽或者掩盖标识符

建议38:不要在一个声明里声明多个变量

建议39:在程序逻辑中用有意义的符号常量代表文字值

建议40:在常量定义中恰当地表示相互之间的关系

建议41:对于返回数组或者集合的方法,用返回一个空数组或者集合来替代返回一个空值

建议42:只在异常的情况下使用异常

建议43:使用try-with-resources语句安全处理可关闭的资源

建议44:不要使用断言来验证不存在的运行时错误

建议45:在条件表达式中,第二个和第三个操作数应使用相同类型

建议46:不要序列化直接指向系统资源的句柄

建议47:更倾向于使用迭代器而不是列举

建议48:对于短生存周期、不常用的对象不要使用直接缓冲区

建议49:从长生存周期容器对象中移除短生存周期对象

程序的可理解性 给出了让程序更易读易懂的建议

建议50:谨慎使用视觉上有误导性的标识符和文字

建议51:避免歧义重载变参方法

建议52:要避免使用带内错误指示器

建议53:不要在条件表达式中进行赋值

建议54:请使用大括号把if、for或while代码体括起来

建议55:不要直接在if、for或while条件语句后面加分号

建议56:在每一个case分支的代码块中加上break语句

建议57:避免不当的计算循环计数器

建议58:使用括号表示操作的优先级

建议59:不要对文件的创建做任何假设 建议60:做浮点运算前把整数转换为浮点数

建议61:确保对象的clone()方法中有调用super.clone()

建议62:保持注释的一致性和可读性

建议63:检测并移除冗余的代码和值 199

建议64:尽量保证逻辑完备 203

建议65:避免有歧义的重载或者误导性的重载 206

程序员的常见误解 展示一些Java语言和编程概念经常被误解的情形

建议66:不要假设使用volatile关键字声明引用可以保证引用所指对象的安全发布

建议67:不要假设sleep()、yield()或getState()方法提供了同步语义

建议68:不要假设对整数做取余运算总是返回正整数

建议69:不要弄混抽象对象的相等性和引用的相等性

建议70:理解按位运算符和逻辑运算符之间的差异

建议71:理解加载字符串时如何做特殊字符转义

建议72:不要使用重载的方法来区分运行时类型

建议73:不要弄混引用的不可变性和对象的不可变性

建议74:谨慎使用序列化方法writeUnshared()和readUnshared()

建议75:不要试图通过把本地引用变量设置为null来帮助垃圾收集器

这75条建议出自《Java编码指南》

《Java编码指南》是《Java安全编码标准》一书的扩展,书中把那些不必列入Java安全编码标准但是同样会导致系统不可靠或不安全的Java编码实践整理了出来,并为这些糟糕的实践提供了相应的文档和警告,以及合规解决方案。
读者可以将本书作为Java安全方面的工具书,根据自己的需要,找到自己感兴趣的规则进行阅读和理解,或者在实际开发中遇到安全问题时,根据书中列出的大致分类对规则进行索引和阅读,也可以通读全书的所有规则,系统地了解Java安全规则,增强对Java安全特性、语言使用、运行环境特性的理解。

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读3 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0