王海鱼 发表于 5 天前

JAVA安全编码规范

1.  数据校验
对外部输入举行校验入参的合法性,
防止内存越界,命令注入,SQL注入,格式化字符串毛病
校验长度,范围,输入校验接纳白名单情势
校验前做归一化处理,利用java.text.Normalizer的normalize()方法, 防止字符转义绕过校验。
克制直接利用外部输入来拼接SQL,推荐利用preparedstatement ,存储过程,或对外部输入转义
克制直接利用外部输入开拼接XML,推荐利用正则表达式对输入举行校验
在对路径举行验证前先对其做尺度化,如路径中的.和.. 相对路径,不要利用f.getabsolutepath,推荐利用f.getcanonicalpath
对zipinputstream中的条目做大小限定
 
2. 异常
克制在异常中袒露敏感信息
 
3. IO操作
临时文件用完实时删除
克制将buffer类中的wrap或duplicate创建的buffer袒露给不受信任的代码,推荐利用asreadonlybuffer()获取只读视图
克制在单个输入流inputstream上创建多份bufferedinputstream,推荐将bufferedinputstream作为类变量(静态变量)
制止在共享目录操作文件
创建文件时指定公道的访问权限 posixfilepermission
 
4. 序列化
敏感数据发送出信任地区要先署名再加密,objectoutputstream 对象输出流,又叫序列化流,objectinputstream对象输入流,又叫反序列化流。
克制序列化未加密的敏感数据,推荐通过transient关键字包管敏感数据不被序列化,也可以通过自界说writeobject()方法,不将敏感字段写到序列化流中。
防止序列化和反序列化被利用来绕开安全管理,java 序列化方法writeobject(),反序列化方法readobject()
 
制止依赖和信任情况变量,不要利用system.getenv,推荐利用system.getproperty
克制在日志中保存口令,密钥
利用安全的尺度的加密算法,禁用私有算法或弱加密算法(如DES SHA),推荐的对称加密算法 AES 128位,推荐的非对称加密算法RSA 2048位,DSA 1024位, 摘要算法SHA256
利用强随机数,securerandom
 
6 定名
全部标识符仅利用ASCII字母和数字 匹配正则\w{2,64}
解释
排版
文件不超过2000刚(非空非解释行)
一个类或接口的声明部门应当按照类(静态)变量,实例变量,构造器,方法的次序出现
对于块状结构,左大括号放在行尾
每行限长120个窄字符
克制C风格的数组声明,利用string[] args
switch语句要有default分支
 
变量
审慎利用静态成员变量
不能用float浮点数作为循环变量
必要精确计算时不要利用float 和double,建议利用int,long,bigdecimal
方法不超过50行
方法的代码块嵌套不要超过4层
不要直接把入参作为临时变量
方法的参数个数不应超过5个
对于返回数组或容器的方法,应返回长度为0的数组或者容器,代替返回null
 
类和接口
覆写 ---- 子类与父类,一个实例方法可以覆写其在超类中可访问到(非private)的实例方法(非static),与父类同名同参,返回范例同等
重载----类内部,同名差别参,返回范例等其他无要求。
覆写equal方法时应同时覆写hashcode方法
接口界说中,属性已缺省具有public static final 修饰词,方法已缺省具有 public abstract 修饰词
方法抛出的异常应该与本身的抽象层次相对应
在finally块中不要利用return break 使finally块非正常结束
一个方法不应抛出超过5个异常
记录异常不要利用exception.getmessage,而要用exception.tostring
运行时异常不必要throws
 
日志工具logger类的实例应声明为 private static final
 
多线程并发
volatile ,提供轻量级的同步机制,和synchronized差别,只能修饰变量,声明一个可能被多线程访问的变量,共享变量。
volatile并不包管原子性,而synchronized修饰的方法或代码块,包管了锁住的代码可以全部执行,不被中断
 
不要在for each循环里举行元素的remove add,删除元素利用removeif 或iterator
 
大量字符串相加假如有线程安全要求应该利用stringbuffer,不涉及线程安全应利用stringbuilder
 
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: JAVA安全编码规范