- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
软件安全开发编码规范
代码编写
开发人员应保证工程中不存在无用的资源(如代码、图片文献等)。
代码中每个类名上的注释必须留下创建者和修改者的名字。
每个需要import的类都应使用一行import声明,不得使用importxxx.*。
System.out.println()仅在调试时使用,正式代码里不应出现。
开发人员编写代码时应遵循以下命名规则:
Package名称应当都是由一组小写字母组成;
Class名称中的每个单词的首字母必须大写;
StaticFinal变量的名称全用大写,并且名称后加注释;
参数的名称必须和变量的命名规范一致;
使用故意义的参数命名,假如也许的话,使用和要赋值的字段同样的名称。
代码应当用unix的格式,而不是windows的。
exit除了在main中可以被调用外,其他的地方不应被调用。
代码中应尽量使用interfaces,不要使用abstract类。
在需要换行的情况下,尽量使用println来代替在字符串中使用的\n。
涉及HTML的文档,尽量使用XHTML1.0transitional文献类型,其中所有HTML标签都应关闭。
在HTML、JavaScript、XML代码中,缩进应为两个空格,不得使用Tab。
HTML标签的name和id属性的命名方式应与Java变量名相同。
在需要经常创建开销较大的对象时,开发人员应考虑使用对象池。
在进行log的获取时开发人员应尽量使用isXXXEnabled。
log的生成环境上尽量避免输出文献名和行号。
产品中不要包含后门代码,隔离系统中的后门代码,保证其不能出现在产品中。作为一种特殊的调试代码,后门访问代码是为了使开发者和测试工程师访问一部分终端用户不能访问的程序代码。但是,假如后门代码被留到产品中,对袭击者来说,它就是一条不需要通过正常安全手段来攻陷系统的通路。
JAVA安全
遵循下面列出的准则有助于编写更加安全的代码。但是总体来说,这些准则不能对安全性做出任何保证。遵循这些准则也许好的实践,但是即使遵循了这些准则,写出的代码仍然也许是不安全的。风险永远存在,不管在编写代码时是如何的警惕。
这些准则的目的,不是为了保证代码的安全性,而是为了消除若干特定类型袭击带来的风险。遵循这些准则,某些特定类型的袭击将无法实现;但是其它类型的袭击仍然也许成功。因此遵循这些准则仅仅是安全的第一步。当书写也许和非守信链接或混用的代码时,应当仔细的考虑如下准则:
静态字段
缩小作用域
公共方法和字段
保护包
尽也许使对象不可变(immutable)
序列化
清除敏感信息
静态字段
避免使用非final的公共静态变量,应尽也许地避免使用非final公共静态变量,由于无法判断代码有无权限改变这些静态变量的值。
一般地,应谨慎使用可变的静态状态,由于这也许导致设想中应当互相独立的子系统之间发生不曾预期的交互。
缩小作用域
作为一个惯例,尽也许缩小成员方法和成员变量的作用域。检查包访问权限成员(package-private)能否改成私有成员(private),保护访问成员(protected)可否改成包访问权限成员(package-private)/私有成员(private)等等。
公共方法/字段
公共变量应当避免使用,访问这些变量时应当通过getter/setter法。在这种方式下,必要时可以增长集中的安全检查。
任何可以访问或修改任何敏感内部状态的公共方法,务必包含安全检查。
参考如下代码段,该代码段中不可信任代码也许修改TimeZone的值:
privatestaticTimeZonedefaultZone=null;
publicstaticsynchronizedvoidsetDefault(TimeZonezone)
{
defaultZone=zone;
}
保护包
有时需要整体上保护一个包以避免不可信任代码的访问,本节描述了一些防护技术:
防止包注入:假如不可信任代码想要访问类的包保护成员,也许通过在被袭击的包内定义自己的新类用以获取这些成员的访问权的方式。防止这类袭击的方式有两种:
通过向perties文献中加入如下文字防止包内被注入恶意类。
...
package.definition=Package#1[,Package#2,...,Package#n]
...
当检测到代码试图在包内定义新类时,类装载器的defineClass方法会抛出异常,除非代码被赋予以下权限:
...
RuntimePermission(defineClassInPackage.+package)
...
另一种方式是通过将包放到封闭的JAR(sealedJar)文献里。
(参看)
通过使用这种技巧,代码无法获得扩展包的
文档评论(0)