<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • JavaEE中10個(gè)安全控制

    時(shí)間:2024-09-12 14:13:32 J2EE培訓(xùn) 我要投稿
    • 相關(guān)推薦

    關(guān)于JavaEE中10個(gè)安全控制

      很多常見攻擊,例如跨站點(diǎn)腳本攻擊(XSS)、SQL注入、 跨站點(diǎn)偽造請(qǐng)求(CSRF),以及XML外部實(shí)體(XXE)絲毫沒有涵蓋。你可以阻止web應(yīng)用程序和web服務(wù)暴露于這些攻擊,但這需要一定量的工作和 測(cè)試。幸運(yùn)的是,Open Web Application Security Project(OWASP)公布了“10大最關(guān)鍵的web應(yīng)用程序安全風(fēng)險(xiǎn)”的報(bào)告。

      1.注入

      注入發(fā)生在開發(fā)人員獲取不可信的信息,例如request.getParameter(),request.getCookie(),或 request.getHeader(),并在命令接口中使用它的任何時(shí)候。例如,SQL注入在你連接不可信的數(shù)據(jù)到常規(guī)SQL查詢,如“SELECT * FROM users WHERE username=‘“ + request.getParameter(“user”) + “‘ AND password=‘“ + request.getParameter(“pass”) = “‘“時(shí)發(fā)生。開發(fā)人員應(yīng)該使用PreparedStatement來防止攻擊者改變查詢的含義和接管數(shù)據(jù)庫(kù)主機(jī)。還有許多其他類型的注入,如 Command注入、LDAP注入以及Expression Language (EL) 注入,所有這些都極度危險(xiǎn),因此在發(fā)送數(shù)據(jù)到這些解釋器的時(shí)候要格外小心。

      2.損壞的驗(yàn)證和會(huì)話管理

      JavaEE支持身份驗(yàn)證和會(huì)話管理,但這里有很多容易出錯(cuò)的地方。你必須確保所有經(jīng)過驗(yàn)證流量都通過SSL,沒有例外。如果你曾經(jīng)暴露 JSESSIONID,那么它就可被用來在你不知情的情況下劫持用戶會(huì)話。你應(yīng)該旋轉(zhuǎn)JSESSIONID,在用戶進(jìn)行身份驗(yàn)證以防止會(huì)話固定攻擊 (Session Fixation attack)的時(shí)候。你應(yīng)該避免使用response.encodeURL(),因?yàn)樗鼤?huì)添加用戶的JSESSIONID到URL,使得更容易被披露或 被盜。

      3.跨站點(diǎn)腳本攻擊(XSS)

      XSS發(fā)生在當(dāng)JavaEE開發(fā)人員從HTTP請(qǐng)求獲取不可信的信息,并把它放到HTTP響應(yīng)中,而沒有適當(dāng)?shù)纳舷挛妮敵鼍幋a的時(shí)候。攻擊者可以利 用這個(gè)行為將他們的腳本注入網(wǎng)站,然后在這個(gè)網(wǎng)站上劫持會(huì)話和竊取數(shù)據(jù)。為了防止這些攻擊,開發(fā)人員需要執(zhí)行敏感的上下文輸出編碼。如果你把數(shù)據(jù)轉(zhuǎn)換成 HTML,使用&#xx;格式。請(qǐng)務(wù)必括號(hào)HTML屬性,因?yàn)橛泻芏嗖煌址粠Юㄌ?hào)的屬性會(huì)被終止。如果你把不可信的數(shù)據(jù)放到 JavaScript,URL或CSS中,那么對(duì)于每一個(gè)你都應(yīng)該使用相應(yīng)的轉(zhuǎn)義方法。并且在和嵌套上下文,如一個(gè)用Javascript寫的在HTML 屬性中的URL打交道時(shí),要非常小心。你可能會(huì)想要編碼庫(kù),例如OWASP ESAPI的幫助。

      4.不安全的直接對(duì)象引用

      任何時(shí)候應(yīng)用程序暴露了一個(gè)內(nèi)部標(biāo)識(shí)符,例如數(shù)據(jù)庫(kù)密鑰,文件名,或hashmap索引,攻擊者就可以嘗試操縱這些標(biāo)識(shí)符來訪問未經(jīng)授權(quán)的數(shù)據(jù)。例 如,如果你將來自于HTTP請(qǐng)求的不可信的數(shù)據(jù)傳遞到Java文件構(gòu)造器,攻擊者就可以利用“../”或空字節(jié)攻擊來欺騙你的驗(yàn)證。你應(yīng)該考慮對(duì)你的數(shù)據(jù) 使用間接引用,以防止這種類型的攻擊。ESAPI庫(kù)支持促進(jìn)這種間接引用的ReferenceMaps。

      5.錯(cuò)誤的安全配置

      現(xiàn)代的JavaEE應(yīng)用程序和框架,例如Struts和Spring中有著大量的安全設(shè)置。確定你已經(jīng)瀏覽過這些安全設(shè)置,并按你想要的那樣設(shè)置。 例如,小心中的標(biāo)簽。這表明安全約束僅適用于列出的方 法,允許攻擊者使用其他HTTP方法,如HEAD和PUT,來繞過整個(gè)安全約束。也許你應(yīng)該刪除web.xml中的標(biāo)簽。

      6.敏感數(shù)據(jù)暴露

      Java有大量的加密庫(kù),但它們不容易正確使用。你應(yīng)該找到一個(gè)建立在JCE基礎(chǔ)上的庫(kù),并且它能夠方便、安全地提供有用的加密方法。比如 Jasypt和ESAPI就是這樣的庫(kù)。你應(yīng)該使用強(qiáng)大的算法,如AES用于加密,以及SHA256用于hashes。但是要小心密碼hashes,因?yàn)?它們可以利用Rainbow Table被解密,所以要使用自適應(yīng)算法,如bcrypt或PBKDF2。

      7.缺少功能級(jí)訪問控制

      JavaEE支持聲明式和程序式的訪問控制,但很多應(yīng)用程序仍然會(huì)選擇創(chuàng)造它們自己的方案。像Spring框架也有基于注釋的訪問控制基元。最重要 的事情是要確保每一個(gè)暴露的端口都要有適當(dāng)?shù)脑L問控制檢查,包括web服務(wù)。不要以為客戶端可以控制任何東西,因?yàn)楣粽邥?huì)直接訪問你的端點(diǎn)。

      8.跨站點(diǎn)偽造請(qǐng)求(CSRF)

      每個(gè)改變狀態(tài)的端點(diǎn)需要驗(yàn)證請(qǐng)求有沒有被偽造。開發(fā)人員應(yīng)該在每個(gè)用戶的會(huì)話中放入隨機(jī)令牌,然后當(dāng)請(qǐng)求到達(dá)的時(shí)候驗(yàn)證它。否則,攻擊者就可以通過 鏈接到未受保護(hù)的應(yīng)用程序的惡意IMG,SCRIPT, FRAME或FORM標(biāo)簽等創(chuàng)建“攻擊”頁(yè)面。當(dāng)受害者瀏覽這種頁(yè)面時(shí),瀏覽器會(huì)生成一個(gè)“偽造”的HTTP請(qǐng)求到URL在標(biāo)簽中被指定的任何內(nèi)容,并且 自動(dòng)包括受害人的認(rèn)證信息。

      9.使用帶有已知漏洞的組件

      現(xiàn)代的JavaEE應(yīng)用程序有數(shù)百個(gè)庫(kù)。依賴性解析工具,如Maven,導(dǎo)致了這個(gè)數(shù)字在過去五年時(shí)間里出現(xiàn)爆炸式增長(zhǎng)。許多廣泛使用的Java庫(kù) 都有一些已知的漏洞,會(huì)讓web應(yīng)用程序被完全顛覆。解決的辦法是及時(shí)更新庫(kù)。不要只運(yùn)行單一掃描,因?yàn)樾碌穆┒疵刻於荚诎l(fā)布。

      10.未經(jīng)驗(yàn)證的轉(zhuǎn)址和轉(zhuǎn)送

      任何時(shí)候你的應(yīng)用程序使用不可信的數(shù)據(jù),例如request.getParameter()或request.getCookie(),在調(diào)用 response.sendRedirect()時(shí),攻擊者可以強(qiáng)制受害者的瀏覽器轉(zhuǎn)到一個(gè)不受信任的網(wǎng)站,目的在于安裝惡意軟件。forward也存在 著類似的問題,不同之處在于攻擊者可以轉(zhuǎn)送他們自己到未經(jīng)授權(quán)的功能,如管理頁(yè)面。一定要仔細(xì)驗(yàn)證轉(zhuǎn)址和轉(zhuǎn)送目標(biāo)。

      你應(yīng)該持續(xù)留意這些問題。新的攻擊和漏洞總是在被發(fā)現(xiàn)。理想情況下,你可以集成安全檢查到現(xiàn)有的構(gòu)建、測(cè)試和部署過程。

      要在應(yīng)用程序中檢查這些問題,可以嘗試免費(fèi)的Contrast for Eclipse插件 。這不是一個(gè)簡(jiǎn)單的靜態(tài)分析工具。相反,C4E利用Java儀表化API,來監(jiān)視應(yīng)用程序中與安全相關(guān)的一切。 C4E甚至能實(shí)時(shí)地做到完整的數(shù)據(jù)流分析,因此它可以跟蹤來自于請(qǐng)求的數(shù)據(jù),通過一個(gè)復(fù)雜的應(yīng)用程序。例如,假設(shè)你的代碼獲取了一個(gè)參數(shù)值,用 base64解碼它,再存儲(chǔ)于map中,把map放到數(shù)據(jù)bean中,再將bean存儲(chǔ)到一個(gè)會(huì)話屬性中,在JSP中獲取bean的值,并使用EL將這個(gè) 值插入到網(wǎng)頁(yè)。Contrast for Eclipse可以跟蹤這些數(shù)據(jù)并報(bào)告XSS漏洞。哪怕你正在使用的是復(fù)雜的框架和庫(kù)。沒有其他工具能在速度,精度和易用性方面與之媲美。

    【JavaEE中10個(gè)安全控制】相關(guān)文章:

    我的JavaEE學(xué)習(xí)路線圖03-18

    播音中如何自如控制氣息03-10

    ZigBee在LED智能路燈控制中的應(yīng)用03-20

    監(jiān)理安全控制案例分析12-29

    網(wǎng)球比賽中如何控制發(fā)球的落點(diǎn)03-09

    小企業(yè)采購(gòu)成本控制中存在的問題03-09

    金屬切削加工中的振動(dòng)分析及控制途徑03-10

    最新施工安全管理控制要點(diǎn)06-30

    2016年進(jìn)度控制考點(diǎn):實(shí)施中的檢查與調(diào)整03-20

    主站蜘蛛池模板: 少妇人妻无码精品视频| 国产成人精品久久二区二区| 亚洲乱码日产精品a级毛片久久| 凹凸国产熟女精品视频app| 亚洲av无码成人精品区| 国产精品性爱| 国产成人精品视频播放| 亚洲日韩精品射精日| 久久97久久97精品免视看秋霞| 欧美一区二区精品久久| 久久国产欧美日韩精品| 亚洲精品成人a在线观看| 国产小呦泬泬99精品| 92精品国产自产在线观看| 国产成人无码精品一区二区三区 | 宅男在线国产精品无码| 国内精品免费久久影院| 日本精品一区二区三区在线观看| 91精品国产高清久久久久久io| 亚洲AV无码久久精品色欲| 亚洲情侣偷拍精品| 亚洲精品久久久www| 毛片a精品**国产| 久久精品国产黑森林| 国产乱人伦偷精品视频不卡| 97精品人妻一区二区三区香蕉 | 精品一区二区三区在线成人| 亚洲中文久久精品无码| 亚洲精品99久久久久中文字幕| 久久精品国产一区二区电影| 国产精品亚洲视频| 国产在AJ精品| 久久99精品免费一区二区| 国产线视频精品免费观看视频 | 四虎国产精品永久免费网址| 亚洲国产精品无码久久久秋霞2| 在线精品亚洲| 久久久无码人妻精品无码| 精品人妻中文av一区二区三区| 精品人妻人人做人人爽| 99久久99这里只有免费的精品|