web安全——應用安全(java)

来源:http://www.cnblogs.com/ansn001/archive/2016/07/07/5649301.html
-Advertisement-
Play Games

簡介 由於網路技術日趨成熟,黑客們也將註意力從以往對網路伺服器的攻擊逐步轉移到了對web應用的攻擊。據最新調查,信息安全有75%都發生在web應用而非網路層面。 場景 1. 控制訪問的許可權。只讓可以訪問的訪問到最小的資源和許可權。 2. 控制輸入內容。所有輸入都可能是不安全的,所以要過濾。 3. 保證 ...


簡介

由於網路技術日趨成熟,黑客們也將註意力從以往對網路伺服器的攻擊逐步轉移到了對web應用的攻擊。據最新調查,信息安全有75%都發生在web應用而非網路層面。

場景

  1. 控制訪問的許可權。只讓可以訪問的訪問到最小的資源和許可權。
  2. 控制輸入內容。所有輸入都可能是不安全的,所以要過濾。
  3. 保證業務的安全。
  4. 保證數據的安全性。
  5. 控制輸出內容。要過濾輸出的內容,解決瀏覽器安全問題。

解決問題

輸入和輸出的很多問題,都可以通過Aop的思想來統一解決。儘量讓應用的問題都通過架構去實現,以避免因為開發人員因素,而且對正常業務是透明、不可見的。
人為的因素,需要有代碼評審流程,甚至需要安全的軟體構建流程去規避。

應用安全

  1. 千萬不要用root!!!啟動程式。
  2. 運行的用戶不允許對源代碼有修改的許可權。
  3. 需要有新文件生成的目錄(比如文件上傳,動態代理等),不能有執行的許可權。
  4. 不允許用戶訪問目錄。基於tomcat來說,把所有的視圖文件(jsp、ftl等)放到WEB-INF下。webapp下不直接放任何文件。

控制輸入內容

用戶所有的輸入,都可以認為是不安全的。千!萬!不!要!以為用戶的輸入是合法的。要採取防禦式的方式去處理應用。確保應用的安全。一般我們提倡的是:防禦式架構和防禦式編程。

控制http參數

  1. 千萬不要亂用數據類型。使用基本數據類型,少用包裝類。包裝類容易被攻擊。不要用String去接受所有類型數據。原則上:是什麼類型就用什麼類型去接收。
  2. 通過架構設計,添加一層設置處理http參數(驗證數據的類型、合法性、長度和範圍)。一般都是通過aop來實現。比如:對郵件、手機的驗證,對非法數字(小於0)的驗證,對整數最大值的驗證,對字元串最大長度的驗證等。

文件上傳

  1. 控制文件類型,通過尾碼控制。上傳文件的尾碼要使用白名單,不要使用黑名單。只允許我們知道的文件類型上傳。這樣能確保全全性。
  2. 控制文件的大小。文件大小必須控制,否則容易出現系統硬碟資源被吃滿。
  3. 上傳的文件要壓縮。這樣就算裡面有攻擊的代碼也會被破壞掉。
  4. 上傳的文件名要隨機、而且沒有規律。可以考慮uuid。否則容易被猜測,然後把文件拖走。

sql註入

  1. 通過框架的參數化去解決。
  2. 要有嚴格的規範以及日常的代碼評審。人為的因素,往往是很多安全問題的罪魁禍首。
  3. 要嚴格規劃應用對資料庫操作的用戶。只允許有查看和修改數據的許可權。就算是出了安全問題,也能把問題減少到最低,比如:至少避免被攻擊者直接drop database.

html註入

通過架構的方法,凈化。實現思路aop。
在http到執行方法前,把標簽凈化掉。如果確實有需要富文本的地方,一定也要使用白名單的方式,只允許少數合法標簽,其他的也全部凈化。
java有一個開發框架是:Anti-Samy,或者自己通過正則來實現。

數據敏感詞

通過架構的方法,分詞、詞庫去解決。實現思路aop。
可以根據敏感的程式來判斷處理機制。
如果程度一般,則可以通過**來替換。
如果程度太高,涉及黃或者國家安全等,則可以拒絕輸入。

保證業務的安全

每一個業務都要考慮是不安全的。然後都應該有對應的處理機制。

防止暴力破解

暴力破解是一種非常容易被忽視的安全問題。
這種問題的解決思路:

  1. 提升密碼複雜度。太簡單的密碼要拒絕。
  2. 記錄驗證頻率。超過這個頻率就拒絕。

比如:登錄,簡訊驗證碼,支付密碼等用戶核心安全業務。

不安全的直接對象引用

不安全的直接對象引用 ,即訪問不屬於自己的業務。
在業務設計的時候要明確哪些是允許其他用戶訪問的,其他的都不允許訪問。還是根據最小原則來處理。
比如:不訪問訪問別人的訂單信息。

不要信任用戶輸入的數據

重要的信息,千萬不能通過讓用戶傳輸過來。千萬不能自認為這些用戶不會輸入啊,都是我們設置好的。
比如:訂單的金額,是否有操作的許可權等。

嚴格的許可權控制

  1. 水平許可權控制。用戶是否有操作業務的操作。比如,用戶對應的角色和身份不允許訪問指定的業務。
  2. 垂直許可權控制。用戶是否按指定的業務流程操作。比如,在一些流程過程中需要先有合同才能進貨,在一些流程中需要先填寫個人信息才能使用後面的功能。

保證數據的安全

互聯網的時代,數據也是極為重要的資源。

不可以預見性

對於重要資源,要隨機性,要不然容易被測試到規則,全部拖走。
比如用戶外頁信息 /home/x.html。這裡的x用的是數字。

控制資源訪問的頻率

比如,只允許同一個ip訪問100次每天。這個規則,可以根據產品或者運營來共同制定。實現思路:通過aop

記錄數據操作記錄

重要的信息操作的時候,要有記錄。實現思路:通過aop。

控制輸出內容

輸出的內容確保是乾凈的,對用戶不會有危險的。同時也不會泄露伺服器的信息。

過濾敏感信息

  1. 把代碼的註釋去除。通過aop實現。
  2. 拒絕伺服器相關的信息,比如ip。這個需要在代碼評審的時候核實。不能有任何硬編碼泄露伺服器信息的地方。
  3. 異常不要說的太明確。每個異常都是要處理的。如果不清楚的異常,提示模糊信息即可,然後把明確的信息記錄到日誌。 通過aop實現

驗證方法

  1. 通過ibm appscan工具驗證。能解決常見的安全問題
  2. 目錄遍歷。御劍。
  3. web後臺暴力破解。httprint。

更牛B的解決方案

雲WAF發展的新道路。感興趣的看參考資料。感覺棒棒噠,果斷還是驗證了那句經典的話重覆就會被解決

參考資料

  1. Web應用安全——攻防對抗發展趨勢
  2. Web應用安全
  3. web應用系統安全開發規範
  4. 常見web應用安全問題

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 後續補充更新 ...
  • 這篇文章是關於Java static關鍵字的使用,主要會介紹以下的內容: 1. static 的概念 2. static的各種應用 3. 總結 static 是什麼 static 顧名思義是靜態的意思。與this相對,static表示所修飾的部分是屬於類本身所有的,不依賴與某個具體的實例。 而thi ...
  • /*************以下源碼通過測試******************************/ package cn.jason.ios.images; import java.awt.FileDialog;import java.awt.Image;import java.io.Fil ...
  • Java最早的名稱叫"oak"後來改名叫"Java". Java最早是屬於"Sun"公司的, 後來被"Oracle"公司收購. 最原始的"oak"是為電視/烤箱/家用電子產品做互動式開發(互動式開發可以理解為"互動式操作", "互動式操作"類似於 現在的"智能家居")的. Java各版本: Java ...
  • 以前在單項目中用過RabbitMQ,沒有問題 不過這次在分散式項目中使用RabbitMQ中有點搞糊塗了,但是實際上是沒有問題的,思路清晰就行 簡單看一下實際操作的示例吧: 資源文件中需要配置基本的rabbitMQ的屬性,如下: 然後要配置applicationContext-rabbitmq.xml ...
  • 一、通用標簽 1.s:property (讀取值棧中對象的屬性值) 屬性:value:指定OGNL表達式;default:OGNL表達式返回為 null 時,使用預設值;escape:是否對 HTML 特殊字元進行轉義 e1:讀取對象棧中對象的屬性值 e2:訪問Map棧,讀取Session域中對象的 ...
  • 代碼一大串! ...
  • 一.設計背景 現實生活中,我們要做一件事情或者完成某項工作,往往有很多種途徑。比如我們出游,可以選擇坐汽車,坐火車,土豪點的選擇是坐飛機。還有我們現線上下的支付方式也有了很多種選擇,以前在外面忘了帶錢的話可能一瓶水都難以買到,現在只要我們手機在身上,可以用微信或者支付寶。 在軟體設計層面,我們把各種 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...