FindBugs 规则整理:Malicious Code Vulnerability

目前已转至个人博客,本系列地址:Lam's Blog - Knowledge as Action

EI_EXPOSE_REP

May expose internal representation by returning reference to mutable object
返回一个易变对象引用并把它保存在对象字段中时会暴露对象内部的字段描述,如果接受不守信任的代码访问或者没有检查就去改变易变对象的会涉及对象的安全和其他重要属性的安全。返回一个对象的新副本,在很多情况下更好的办法。

EI_EXPOSE_REP2

May expose internal representation by incorporating reference to mutable object
此代码把外部可变对象引用存储到对象的内部表示。如果实例受到不信任的代码的访问和没有检查的变化危及对象和重要属性的安全。存储一个对象的副本,在很多情况下是更好的办法。

FI_PUBLIC_SHOULD_BE_PROTECTED

Finalizer should be protected, not public
一个类中的finalize()方法必须声明为protected,而不能为public类型

MS_EXPOSE_REP

Public static method may expose internal representation by returning array
一个public类型的静态方法返回一个数组,可能引用内部属性的暴露。任何代码调用此方法都可以自由修改底层数组。一个解决办法是返回一个数组的副本。

MS_FINAL_PKGPROTECT

Field should be both final and package protected
一个静态字段可能被恶意代码或另外一个包所改变的。字段可以放到protected包中也可以定义为final类型的以避免此问题。

MS_MUTABLE_ARRAY

Field is a mutable array
一个定义为final类型的静态字段引用一个数组时它可以被恶意代码或在另其他包中所使用。这些代码可以自由修改数组的内容。

MS_MUTABLE_HASHTABLE

Field is a mutable Hashtable
一个定义为final类型的静态字段引用一个Hashtable时可以被恶意代码或者在其他包中被调用,这些方法可以修改Hashtable的值。

MS_OOI_PKGPROTECT

Field should be moved out of an interface and made package protected
将域尽量不要定义在接口中,并声明为包保护
在接口中定义了一个final类型的静态字段,如数组或哈希表等易变对象。这些对象可以被恶意代码或者在其他包中被调用,为了解决这个问题,需要把它定义到一个具体的实体类中并且声明为保护类型以避免这种错误。

MS_PKGPROTECT

Field should be package protected
一个静态字段是可以改变的恶意代码或其他的包访问修改。可以把这种类型的字段声明为final类型的以防止这种错误。

其他文章(持续更新)

FindBugs:简介与使用
FindBugs 规则整理:CORRECTNESS
FindBugs 规则整理:Bad Practice
FindBugs 规则整理:Style & Dodgy
FindBugs 规则整理:Multithreaded Correctness
FindBugs 规则整理:Security & Experimental
FindBugs 规则整理:Performance
FindBugs 规则整理:Internationalization

引用

整合以下文章过程中发现部分存在翻译错误,已做修正,同时感谢以下文章作者
FindBugs规则整理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,859评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 2,019评论 0 3
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,259评论 9 118
  • 为了防止被“杀”了祭天,学点设计模式,并总结下还是有必要的。 一:理解 顾名思义,装饰者模式可以在不修改基础类的前...
    阿菜的博客阅读 610评论 0 2