項目中必須對應的隱性需求-安全漏洞修複

来源:https://www.cnblogs.com/xiexj/archive/2019/01/02/10197471.html
-Advertisement-
Play Games

WHAT 項目中必須對應的隱性需求-安全漏洞修複 WHY 小時候下圍棋,總樂於持白子。因為我的打法是“從那裡來我哪裡堵”,在防守中尋找對方的漏洞。這種作戰方法是有底層的思想根因的:就是懶惰。不願意去主動思考佈局。 在這一思想的引導下,我目前正面臨著過去十多年積累起來的困境。記得大學之前,面對一個認識 ...


WHAT

項目中必須對應的隱性需求-安全漏洞修複

 

WHY

    小時候下圍棋,總樂於持白子。因為我的打法是“從那裡來我哪裡堵”,在防守中尋找對方的漏洞。這種作戰方法是有底層的思想根因的:就是懶惰。不願意去主動思考佈局。

    在這一思想的引導下,我目前正面臨著過去十多年積累起來的困境。記得大學之前,面對一個認識的人,我心裡是有預期的。我大體知道這個人在想什麼。慢慢的,除了我周圍的親人,其他人站在我面前我大腦一片空白。曾經以為這是因為我面對的環境更加複雜了。後來細想這不是本因,本因是我正一點點的失去獲得常識的能力。

    小時候很愛大自己十歲的親哥哥,他不喜歡我,視我為資源掠奪者。我想當時是遇到過一些事情,但不至於是什麼忍受不了的大事。我卻選擇了逃避,在上大學時消除了自己的部分記憶。怕壓力,第一份工作在一個二線城市世外桃源一樣的大園子里上班。後來想換地方,找了現在的老公先給我鋪路。因為畢業比同齡人略早些,所以在沒有結婚壓力的時候就結婚了,沒有生子壓力的時候就生娃了。仗著運氣好嫁對了人,萬事不操心,過著白痴一樣的生活。不知己之痛,更不知別人之痛。所以常識漸失。

    電視劇《黃真伊》裡面一句話:藝術最重要的是痛苦。後來想痛苦大概是最重要一種能力。在設定項目計劃的時候,最重要的要解決痛點。很多人的成功都來源於夢想和渴望。而夢想和渴望就是求而未得之痛。下棋時更願意花心思去佈局的人必然是對成功渴望更大的人。棋未下,我已經輸了。

    

    安全問題或許是一多半產品人員在提需求的時候都不會特意強調的東西,卻是對技術人員來說必須要考慮的常識。XXX被DDos攻擊,系統癱瘓。XXX數據泄露導致股價大跌,公司被起訴。最近風口浪尖上的臉書照片事件就是血淋漓的例子。一旦遇上,捲鋪蓋走人算是輕的了。如果技術人員不慎重對待,結果必然會如現在的我一樣,陷入作繭自縛的困境。

 

HOW

    今天將一些產品或者上上下下都會考慮的顯性安全需求(如合規需求)排除在外,總結下開發人員必備的安全設計。在我看來,這個如限流、降級一樣,屬於系統的穩定性範疇,當然很多人將其獨立出來作為安全性範疇也是非常合理的。

    這類設計總結來說是用來解決兩類問題。一個是自己不作死,另一個是不被別人搞死。

    

一.不作死

1.1 準入校驗

    1.1.1 文本準入

    1.1.2 操作合理性準入

1.2 數據處理

    1.2.1 輸入轉義

    1.2.2 輸出轉義

    1.2.3 敏感信息加密

1.3 許可權控制

    1.3.1 杜絕批量操作

    1.3.2 限制暴露範圍

二.不被搞死

2.1 應對代碼註入

    2.1.1 XSS攻擊

    2.1.2 CSRF攻擊

    2.1.3 mysql註入攻擊

2.2 漏洞補丁升級

    2.2.1 弱口令漏洞

    2.2.2 開源代碼漏洞

    2.2.3 文件上傳漏洞

2.3 基礎安全設施

    2.3.1 WAF

    2.3.2 安全審計

    2.3.3 風控

    2.3.4 安全監控

 

    上面的目錄我先單獨列一下,希望大家可以記住。都是平時開發中需要考慮的。下麵稍詳細的介紹一下。

 1.1.1 文本準入

    做業務需求有個常識,對於用戶輸入的每個欄位都需要和產品經理討論一下:什麼類型、長度多少、允許的字元集範圍、格式是否合法。這麼做一方面是設計問題,包括產品設計、資料庫設計,還有一部分是安全問題:一個數值型的欄位肯定比一個粗放的文本型欄位被攻擊的可能性小,起碼不會傳到後端之後被當成腳本被執行。

1.1.2 操作合理性準入

    比如一個普通用戶不能編輯另一個用戶的個人信息。比如i申請公司伺服器,一次申請1萬台機器。比如流量準入,一臺機器以超快的速度頻繁訪問一個網站的資訊信息,就可能不是真實用戶操作而是爬蟲。以上都會對系統安全性產生極大的影響。

1.2.1 輸入轉義 & 1.2.2 輸出轉義

    我在項目有個原則:儘量保存用戶的原始信息。比如用戶輸入一個頁面腳本編寫方法的文章,在資料庫中保存的時候,儘量只轉義sql關鍵字(apache 里有現成的轉義方法)而不轉義html和js腳本。html和腳本在顯示再做轉義。

1.2.3 敏感信息加密

    最基本的用戶密碼必須密文存儲,並且不能明文出現在日誌中。 其他信息如手機號、銀行卡號等不能全文顯示。一般的表示方法是XXX***XXXX。

1.3.1 杜絕批量操作 

    常規代碼里的操作都必須是點對點的。批量操作,查詢可以,只要能保證存儲壓力夠。要是批量的執行XXX,應用場景有:比如臨時的一次性操作。如果是常規操作,那就必須走審批,而且一次操作必須有個數限制,保證出了問題影響範圍也可控。

1.3.2 限制暴露範圍

    開發一整套系統內部各個模塊通常有內網功能變數名稱、外網功能變數名稱或者dubbo這種服務註冊發現機制。這種區分出了傳輸效率、成本、資源等考慮之外,還有一個很重要的因素就是安全。一個外網服務肯定要比一個內網服務更可能遭到攻擊。

 

2.1.1 XSS攻擊

    XSS(Cross Site Scripting)攻擊全稱跨站腳本攻擊,是為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆。它是一種在web應用中的電腦安全漏洞,它允許惡意web用戶將代碼植入到提供給其他用戶使用的頁面中。

危害包括:

1>盜取各類用戶賬號,如機器登陸賬號、用戶網銀賬號、各類管理員賬號

2>控制企業數據,包括讀取、篡改、添加、刪除企業敏感數據的能力。

3>盜竊企業重要的具有商業價值的資料

4>非法轉賬

5>強制發送電子郵件

6>網站掛麽

7>控制受害者機器想其他網站發起攻擊

2.1.2 CSRF攻擊

    CSRF(Cross-site request forgery),中文名稱:跨站請求偽造。也被稱為:one click attack/session riding。區別於XSS的利用站點內的信任用戶,它通過偽裝成受信任用戶的請求來達到目的。

常見特性:

1>依靠用戶標識危害網站

2>利用網站對用戶標識的信任

3>欺騙用戶的瀏覽器發送http請求給目標站點

2.1.3 mysql註入攻擊

    概念很好理解不多說。介紹一下種類:

1>GET註入:輸入參數通過URL發送

2>POST註入:輸出參數通過HTTP正文發送

3>COOKIE註入:輸入參數通過HTTP COOKIE發送

3>HTTP Headers註入:通過HTTP提交應用程式使用的頭髮送

2.2.1 弱口令漏洞

    弱口令(weak password)沒有嚴格和準確的定義,通過人為容易被別人猜測到或被破解工具破解的口令。主要類別有:

1>空口令或系統預設的口令

2>口令長度小於8個字元

3>口令為連續的某個字元或重覆的某些字元

4>口令應該為以下四類字元的組合,大寫字母、小寫字母、數字和特殊字元。沒類字元至少包含一個。如果某類字元只包含一個,那麼該字元不應為首字元或尾字元。

5>口令不應漢堡本人、父母、子女和配偶的姓名和出生日期、紀念日期、登陸名、email等與本人有關的信息,以及字典中的單詞。

6>口令不應該為用數據或符號代替某些字母的單詞

7>至少90天內更換一次口令,防止未被髮現的入侵者繼續使用該口令。

 

    記得很久之前在日本出差的時候,當地人都下班了,我們需要登錄系統查看東西。但是只有當地人有密碼,還好有我。我在當時別人輸出密碼時記住了,省了大事兒。

2.2.2 開源代碼漏洞

    舉幾個例子:

1>Jackson反序列化遠程代碼執行漏洞

北京時間2017年4月15日,jackson框架被髮現存在一個反序列化代碼執行漏洞。該漏洞存在於Jackson框架下的enableDefaultTyping方法。攻擊者可以遠程在伺服器主機上越權執行任意代碼,從而取得該網站伺服器的控制權。

2>Jboss遠程代碼執行漏洞

Java應用里都有特定的介面用於傳遞序列化對象數據,而在反序列化時沒有限制實例化對象的類型,導致可以任意構造用用中已經包含的對象利用反序列化操作進行實例化。

2.2.3 文件上傳漏洞

    這個獲得伺服器許可權的直接性就不多說了。說說工作中一般的預防措施吧。

1>客戶端校驗:規定上傳文件的尾碼

2>服務端校驗:主要是文件頭校驗,如content-type等

2.3.1 WAF

    Web應用防護系統(Web Applicatio Firewall)是通過執行一系列針對http/https的安全策略來專門為web應用提供保護的一款產品。主要特點是:

1>異常檢測協議

    對http的請求進行異常檢測,拒絕不合符http標準的請求。也可以只允許http協議的部分選項通過,從而減少攻擊的影響範圍。

2>增強的輸入驗證

3>及時補丁

4>基於規則的保護和基於異常的保護

5>狀態管理

2.3.2 安全審計

    是由專業審計人員根據有關的法律法規、財產所有者的委托和管理當局的授權,對電腦網路環境下的有關活動或行為進行系統的、獨立的檢查驗證,並做出相應評價。

    靜兒接觸多的是金融方面的,太多合規操作:包括伺服器獨立部署、牌照、一清二清,做金融業務開發對比如8583報文、銀行發佈的各類文件都要仔細研讀。

2.3.3 風控

    風險控制的四種基本方法:風險迴避、損失控制、風險轉移和風險保留。金融的核心就是風控。

2.3.4 安全監控

    安全監控通過實時監控網路或主機活動、監視分析用戶和系統的行為,審計系統配置和漏洞,評估敏感系統和數據的完整性,識別攻擊行為,對異常行為進行統計和跟蹤,識別違反安全法規的行為,使用誘騙伺服器記錄黑客行為等功能,使管理員有效的監視、控制和評估網路或主機系統。

 

總結

    安全無小事,保持敬畏之心。

    互聯網這個行業其實不怎麼缺學東西快的,缺有想法的。但是很多有想法的人需要經歷多次失敗才會成功。這些失敗就是碰上了安全等需要但是沒有考慮的釘子才成為成功之母的。


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

-Advertisement-
Play Games
更多相關文章
  • 瀏覽器中的JavaScript: 1.基於ECMAscript規範,這個規範規定了語法 2.添加了dom:用來處理文檔 document object model 3.添加了BOM:用於操作瀏覽器 window location histrory navigator Node中的JavaScript ...
  • 身為一個前端攻城獅,是不是經常遇到各種各樣的響應式問題?下麵我們來說一下: 1.響應式跟自適應有什麼區別? 有些人可能還不知道響應式跟自適應的區別,甚至認為他們是同一個東西,其實不是的. 自適應是最早出現的,後面才有了響應式。響應式佈局等於流動網格佈局,而自適應佈局等於使用固定分割點來進行佈局。 如 ...
  • 由於升級了 v0.2 版 GearCase 使用打包工具從 parcel 更換成 vue-cli 3.x。因此打包後發佈 NPM 包的方式與之前有很大的差異,這也導致了在發佈完 GearCase v0.2.2 版本之後,我自己在進行 NPM / Yarn 安裝包時。根本無法通過之前文檔的方式,進行引 ...
  • (1)typeof 和 instanceof 1、typeof 對於基本數據類型(boolean、null、undefined、number、string、symbol)來說,除了 null 都可以顯示正確的類型;對於對象來說,除了函數都會顯示 object。 2、instanceof 是通過原型鏈 ...
  • 這個問題有時候會導致彈出框確定按鈕失效等一系列問題, 解決辦法:失去焦點時將頁面滾動到底層,或者最頂部,個人看實際情況滾動到適合位置 $('input,textarea').on('blur', function () { window.scroll(0, document.body.scrollH ...
  • FaaS介紹 微服務(MicroService)是以專註於單一服務/功能的小型單元塊為基礎,利用模塊化的方式組合成複雜的大型應用服務。 FaaS是Function as a Service的縮寫,可以簡單理解為功能服務化。FaaS提供了一種比微服務更加服務碎片化的軟體架構範式。FaaS可以讓研發只需 ...
  • 閑話少說,直接列舉問題: ①AB兩台資料庫伺服器做集群,由於兩台伺服器配置不一樣,如何在代碼中要實現每訪問伺服器A的資料庫2次,才能訪問伺服器B的資料庫1次。 ②AB兩台資料庫伺服器做讀寫分離,如何在代碼中控制,查詢數據使用伺服器A的資料庫連接,增刪改使用伺服器B的資料庫連接。 代碼結構: 代碼實現 ...
  • 一、概念 組合模式:允許你將對象組合成樹形結構來表現“整體/部分”層次結構。組合能讓客戶以一致的方式處理個別對象以及對象組合。 組合包含組件。組件有兩種:組合和葉節點元素。組合持有一群孩子,這些孩子可以是別的組合或者葉節點元素。 角色:  組合部件(Component):它是一個抽象角色, ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...