国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

您的 Java 代碼安全嗎?

2019-11-18 11:17:20
字體:
來源:轉載
供稿:網友

  雖然客戶仍然很關心您為他們構建的應用程序的可伸縮性和可用性,但他們可能變得也很關心安全性,而且要求非凡嚴格。應用程序可能輕易受到兩類安全性威脅的攻擊:靜態和動態。雖然開發人員不能完全控制動態威脅,但在開發應用程序時,您可以采取一些預防措施來消除靜態威脅。本文概括并解釋了 13 種類型的靜態暴露 ― 它們是系統中的缺陷,它使系統暴露在想要篡奪該系統的特權的攻擊者面前。您將學會如何處理這些暴露,以及如何發現(假如不處理這些暴露)這些暴露可能造成的影響。

  在開發 java Web 應用程序時,您需要確保應用程序擁有完善的安全性特征補充。這里在談到 Java 安全性時,我們并不談及 Java 語言提供的安全性 API,也不涉及使用 Java 代碼來保護應用程序。本文將著重討論可能潛伏在您的 Java 應用程序中的 安全性暴露。安全性暴露是系統中的缺陷,它使系統無法 ― 即使系統被正常使用 ― 防止攻擊者篡奪對系統的特權、控制系統的運行、危及系統上的數據安全或者假冒未經授權的信任。相對于安全性暴露,許多開發人員更加關心網站的感官效果。

  毫無疑問,客戶現在既嚴格地關注性能、可伸縮性和可用性也嚴格地關注安全性。應用程序可能輕易受到兩類安全性威脅的攻擊: 動態和 靜態。動態威脅是那些同未經授權進入系統有關的威脅,或那些同跨越網絡傳輸的數據的完整性、隱私和機密性有關的威脅。這些威脅同應用程序的功能代碼沒有多大關系;使用加密、加密術和認證技術來消除這些威脅。相比之下,靜態威脅卻同應用程序的功能代碼 有關;它們同進入系統的授權用戶所做的事情有關。未知用戶闖入系統是動態威脅的一個示例;授權用戶以未授權方式操作系統內的代碼或數據是靜態威脅的示例。應用程序開發人員并不能完全控制動態威脅;但開發人員在構建應用程序時卻可以采取預防措施來消除靜態威脅。

  在本文中,我們討論了對付 13 種不同靜態暴露的技巧。對于每種暴露,我們解釋了不處理這些安全性問題所造成的影響。我們還為您推薦了一些準則,要開發不受這些靜態安全性暴露威脅的、健壯且安全的 Java 應用程序,您應該遵循這些準則。一有合適的時機,我們就提供代碼樣本(既有暴露的代碼也有無暴露的代碼)。

  對付高嚴重性暴露的技巧

  請遵循下列建議以避免高嚴重性靜態安全性暴露:

  ·限制對變量的訪問
  ·讓每個類和方法都成為 final,除非有足夠的理由不這樣做
  ·不要依靠包作用域
  ·使類不可克隆
  ·使類不可序列化
  ·使類不可逆序列化
  ·避免硬編碼敏感數據
  ·查找惡意代碼

  限制對變量的訪問

  假如將變量聲明為 public,那么外部代碼就可以操作該變量。這可能會導致安全性暴露。

  影響
  假如實例變量為 public ,那么就可以在類實例上直接訪問和操作該實例變量。將實例變量聲明為 PRotected 并不一定能解決這一問題:雖然不可能直接在類實例基礎上訪問這樣的變量,但仍然可以從派生類訪問這個變量。

  清單 1 演示了帶有 public 變量的代碼,因為變量為 public 的,所以它暴露了。

  清單 1. 帶有 public 變量的代碼

class Test {
    public int id;
    protected String name;

    Test(){
        id = 1;
        name = "hello world";
    }
    //code
}

public class MyClass extends Test{
    public void methodIllegalSet(String name){
        this.name = name;  // this should not be allowed
    }

    public static void main(String[] args){
        Test obj = new Test();
        obj.id = 123; // this should not be allowed
        MyClass mc = new MyClass();
        mc.methodIllegalSet("Illegal Set Value");
    }
}

  建議
  一般來說,應該使用取值方法而不是 public 變量。按照具體問題具體對待的原則,在確定哪些變量非凡重要因而應該聲明為 private 時,請將編碼的方便程度及成本同安全性需要加以比較。清單 2 演示了以下列方式來使之安全的代碼:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔西县| 鄂伦春自治旗| 通州区| 庄浪县| 溧水县| 商城县| 太保市| 五峰| 屏东市| 忻城县| 武川县| 宁都县| 嘉祥县| 兰坪| 靖西县| 平顶山市| 武汉市| 临海市| 新宾| 金坛市| 石屏县| 邳州市| 乐安县| 孝感市| 麟游县| 辽宁省| 杭锦后旗| 新邵县| 五华县| 张家界市| 泸水县| 达州市| 唐海县| 五原县| 宝应县| 都江堰市| 交城县| 唐山市| 侯马市| 平乐县| 全州县|