枚举类常见漏洞解决

Posted agoodmanisme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举类常见漏洞解决相关的知识,希望对你有一定的参考价值。

枚举通常被认为是常量,但是具有公共字段或公共setter的枚举不仅是非常量,而且容易受到恶意代码的攻击。理想情况下,枚举中的字段是私有的,并在构造函数中设置,但如果不能这样做,则应该尽可能降低它们的可见性。

不合规的代码示例

public enum Continent {

  NORTH_AMERICA (23, 24709000),
  // ...
  EUROPE (50, 39310000);

  public int countryCount;  // Noncompliant
  private int landMass;

  Continent(int countryCount, int landMass) {
    // ...
  }

  public void setLandMass(int landMass) {  // Noncompliant
    this.landMass = landMass;
  }

合规的代码示例

public enum Continent {

  NORTH_AMERICA (23, 24709000),
  // ...
  EUROPE (50, 39310000);

  private int countryCount;
  private int landMass;

  Continent(int countryCount, int landMass) {
    // ...
  }

因此我们在构建枚举类的时候尽量不要构建setter方法,因为这样会带来一系列的安全隐患。

以上是关于枚举类常见漏洞解决的主要内容,如果未能解决你的问题,请参考以下文章

比起睡觉,我更喜欢刷巨详细的Java枚举类,这是来自猿人的自觉呀

用户名枚举漏洞怎么解决

常见系统安全漏洞及解决方案

Android App 安全的HTTPS 通信

java中枚举的常见用法

asp.net 用IBM Appscan 软件扫描爆出“登录错误信息凭证枚举”高位漏洞!请问怎么解决啊?