1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          WEB開發常見的安全漏洞和解決思路

          來源:互聯網轉載 時間:2024-10-12 14:54:23

          隨著互聯網的普及,網絡安全變得越來越重要。程序員需要掌握基本的web安全知識,防患于未然,下面列舉一些常見的安全漏洞,以及對應的防御解決方案。

          一、SQL注入

          SQL注入是比較常見的網絡攻擊方式之一,主要是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,實現無帳號登錄,甚至篡改數據庫。

          1、SQL注入的危害

          • 數據庫信息泄漏:數據庫中存放的用戶的隱私信息的泄露。

          • 網頁篡改:通過操作數據庫對特定網頁進行篡改。

          • 數據庫被惡意操作:數據庫服務器被攻擊

          • 服務器被遠程控制,被安裝后門

          • 刪除和修改數據庫信息

          2、SQL注入最常見的方式有:

          1)布爾型盲注

          在互聯網剛剛興起的時候,該方法常常會被用來惡意登錄一些安全性不高的網站

          select*FROMusersWHEREuser_name='zhangsan'andpassword='mima';

          如果用戶在密碼框里填入 'or1=1or1=',那么上面的SQL 就變成了

          select*FROMusersWHEREuser_name='zhangsan'andpassword=''or1=1or1='';

          這樣就可以繞過密碼校驗,登錄為任意用戶了

          2)報錯型注入

          一個常見的語句為 :

          select*FROMusersWHEREid=1ANDuser_name='zhangsan'

          通過修改 zhangsan 這個 入參,很容易將SQL拼接為

          select*FROMusersWHEREid=1ANDuser_name='zhangsan'AND(SELECT1FROM(SELECTCOUNT(*),concat(USER(),FLOOR(RAND(0)*2))XFROMinformation_schema.tablesGROUPBYX)a)AND1='1';

          這個語句會報一個固定的錯誤

          顯然,你用來登錄MySQL的用戶名就暴漏了

          3)union注入

          這種比較好理解,就是在原來的select 語句上通過union的方式,增加新的信息,將SQL拼接為

          select*FROMusersWHEREid=1ANDuser_name='zhangsan'unionselect*fromother_table

          這種方式可以查詢到你的任意表的信息,嚴重的話可能會被脫庫。

          4)SQL堆疊查詢

          這種跟union類似,可以將SQL拼接為

          select*FROMusersWHEREid=1ANDuser_name='zhangsan';select*fromother_table

          更為嚴重的是,分號后面的語句時可以隨意寫的,如果時拼上 drop 或者 delete 之類的語句 就可以會造成刪庫的風險了。

          SQL注入的攻擊最常見,影響也最大,SQL注入的本質是將 用戶本來應該傳入的 “數據” 變成了 程序 會執行的“代碼”,從根源上解決這個問題,就是不要讓 數據變成代碼,最好的方式就是預編譯了。

          3、防止SQL注入的方式

          通常情況下,SQL注入的位置包括:

          (1)表單提交,主要是POST請求,也包括GET請求;

          (2)URL參數提交,主要為GET請求參數;

          (3)Cookie參數提交;

          (4)HTTP請求頭部的一些可修改的值,比如Referer、User_Agent等;

          SQL注入時web開發中最常見也是危害性最大的安全漏洞,SQL注入攻擊可能會導致 服務器故障,數據泄漏,數據被惡意刪除等等嚴重后果。

          二、CSRF漏洞

          CSRF跨站點請求偽造(Cross—Site Request Forgery),跟XSS攻擊一樣,存在巨大的危害性,攻擊者盜用了你的身份,以你的身份來調用后臺接口,對服務器來說這個請求是完全合法的,但是實際上,這個接口的調用,你卻并不知情。

          簡單模擬一下整個過程如下:

          1. 張三打開瀏覽器,訪問受信任網站A,輸入用戶名和密碼請求登錄網站A;網站A 有一個接口為
          http://www.a.com/deletedata?id=100 ,那么正常情況下,因為張三已經登錄了網站A,那么他是可以直接訪問這個接口的。

          2. 張三在同一瀏覽器中,打開一個TAB頁訪問網站B;網站B 上有這么一段代碼查看,這樣的話 如果張三在B網站上點擊了 查看 這個 按鈕,那么實際上 ,他就刪除了 在 A網站上的 數據了。

          當然例子里是個 deletedata ,而實際上這個接口的含義也可能是查詢了某個數據,甚至時轉了一筆錢等等,那么影響就非常大了。

          要防治CSRF 漏洞,一般有兩種方法:

          1.驗證 HTTP Referer 字段

          HTTP Referer是header的一部分,當瀏覽器向web服務器發送請求的時候,一般會帶上Referer,告訴服務器該網頁是從哪個頁面鏈接過來的,服務器因此可以獲得一些信息用于處理,以上示例中,如果A網站做了這個校驗,那么他就可以識別出 deletedata 這個請求時來自于 B網站而不是A網站自身,就可以拒絕掉這個請求了。

          這種方式最常見也最簡單,但是卻并不是最安全的,畢竟Referer是依賴瀏覽器的,每個瀏覽器對 Referer的實現可能不一樣,對于部分瀏覽器,Referer 甚至是可以篡改的 。另外,由于網站會記錄 Referer信息 ,在用戶對隱私的問題越來越敏感的今天,可能會帶來隱私風險問題。

          2.在請求中增加 token 并驗證;

          CSRF攻擊之所以能夠成功,是因為攻擊者可以偽造用戶的請求,是因為黑客利用已知信息以及cookie中的未知信息 來發起了攻擊,那么,如果我們添加一個不能偽造的并且不在cookie中的未知信息,那么攻擊就無法產生了。因此,我們可以在HTTP請求中以參數的形式加入一個隨機產生的token,并在服務端進行token校驗,如果沒有token或者token的值不正確,我們就認為這是一個非法的請求,拒絕掉他就可以了。

          三、SSRF漏洞

          SSRF是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。因為請求本身是由服務端發起的,因此可以通過這個請求調用到服務端的一些內部接口,探測內網的信息,攻擊內網的服務等等。

          可能會產生SSRF 漏洞的地方主要有:

          1.能夠對外發起網絡請求的地方

          2.請求遠程服務器資源的地方

          3.一些郵件系統,文件上傳,文件處理系統,在線處理工具等等

          舉一個簡單的示例:

          假如 A網站有一個功能,就是用來下載一些第三方的數據的,URL 為 http://a.com/downloadurl="http://b.com/b.jpg",

          執行邏輯上其實就是簡單的 wget -Ob.jpg http://b.com/b.jpg 這樣的。明面上,這個功能很簡單,就是將一些網站 ,比如 b.com 上的 圖片給下載下來保存??雌饋頉]啥問題

          但是,如果這里的參數被人利用 改成了 http://a.com/downloadurl="
          http://127.0.0.1/deletedata?id=1" ,那么當你執行 weget -Ob.jpg 的時候,就等于是執行了內部接口 deletedata了,這樣就會對內部系統造成攻擊。更深層次的,如果是用的其他一些協議,比如 downloadurl 為 file:///etc/passwd ,或者
          dict://127.0.0.1:6379/info 之類的,就可以直接拿到服務器上的一些數據信息了。

          防治SSRF漏洞的思路主要就是禁止對不安全的資源進行下載和訪問:

          1.禁用不需要的協議,僅僅允許http和https請求,并禁止30x跳轉,可以防止類似于file://, gopher://, ftp:// 等引起的問題。

          2.服務端的服務都需要做訪問授權,避免root啟動,禁止非正常用戶訪問服務。

          3.設置URL白名單,限制內網ip的請求,過濾輸入信息,嚴格判斷輸入的URL是不是安全的URL

          四、XSS漏洞

          1.XSS簡介

          跨站腳本(cross site script)簡稱為XSS,是一種經常出現在web應用中的計算機安全漏洞,也是web中最主流的攻擊方式。

          XSS是指惡意攻擊者利用網站沒有對用戶提交數據進行轉義處理或者過濾不足的缺點,進而添加一些代碼,嵌入到web頁面中去,使別的用戶訪問都會執行相應的嵌入代碼。

          2.XSS攻擊的危害

          1、盜取用戶資料,比如:登錄帳號、網銀帳號等

          2、利用用戶身份,讀取、篡改、添加、刪除企業敏感數據等

          3、***企業重要的具有商業價值的資料

          4、非法轉賬

          5、強制發送電子郵件

          6、網站掛馬

          7、控制受害者機器向其它網站發起攻擊

          3.防止XSS解決方案

          XSS的根源主要是沒完全過濾客戶端提交的數據 ,所以重點是要過濾用戶提交的信息。

          • 將重要的cookie標記為http only, 這樣的話js 中的document.cookie語句就不能獲取到cookie了.

          • 只允許用戶輸入我們期望的數據。 例如:age用戶年齡只允許用戶輸入數字,而數字之外的字符都過濾掉。

          • 對數據進行Html Encode 處理: 用戶將數據提交上來的時候進行HTML編碼,將相應的符號轉換為實體名稱再進行下一步的處理。

          • 過濾或移除特殊的Html標簽, 例如: <script>, <iframe> , < for <, > for >, &quot for

          • 過濾js事件的標簽。例如 "onclick=", "onfocus" 等等。

          五、越權漏洞

          越權漏洞也是常見的web漏洞,一般分為分為水平越權和垂直越權兩種,水平越權指的是攻擊者嘗試訪問與他擁有相同權限的用戶的資源,比如A本來是只能看A自己的用資料的,但是當他把URL 為getInfo?id=a 修改為 getInfo?id=b 后 就可以看到b的數據了。垂直越權是指普通的用戶獲取到了比他級別更高的用戶的權限,如果普通用戶獲取到了管理員的權限。

          1.水平越權

          水平越權里,一個最常見的示例就是攻擊者通過遍歷ID 來進行信息的竊取。比如某個頁面如下:

          這個頁面在顯示列表時,就通過后臺進行過濾,只顯示了當前登錄者的任務列表

          任務名

          查看詳情

          任務1

          getInfo?id=1

          任務2

          getInfo?id=2

          任務3

          getInfo?id=3

          列表里的數據,攻擊者時沒法偽造的,但是這里有一個查看詳情的鏈接,如果這個 getInfo 接口本身沒有做好鑒權的話,那么攻擊者就可以通過遍歷ID 的方式來查到到了所有用戶的詳情數據了,嚴重的甚至可能會被脫庫。

          2.垂直越權

          垂直越權的常見例子就是菜單的展示,比如管理員可以看到所有的菜單,包括“系統管理” 這個菜單,而其他用戶是看不到 “系統管理” 這個菜單的,但是,如果某個用戶通過特殊途徑,獲取到“系統管理” 這個菜單的URL ,他直接通過這個URL 來進行訪問,發現時可以訪問,這個就是產生了垂直越權的漏洞了。

          要避免越權漏洞,主要還是需要從邏輯上進行完善,以下有幾點建議:

          1.所有的接口都要做到兩層鑒權,包括接口本身的鑒權以及接口對應的數據的鑒權

          2.鑒權,服務端對請求的數據和當前用戶身份做校驗

          3.所有的鑒權都要在后臺做,不能依靠前端來鑒權

          4.對于會暴漏給用戶的數據,盡量避免通過自增ID的方式來實現,最好有自己的生成器,讓黑客沒法通過遍歷的方式來獲取數據

          5.對于特別敏感的操作,可以進行二次權限校驗

          網絡漏洞掃描器對目標系統進行漏洞檢測時,首先探測目標系統的存活主機,對存活主機進行端口掃描,確定系統聽開放的端口,同時根據協議指紋技術識別出主機的操作系統類型。然后掃描器對開放的端口進行網絡服務類型的識別,確定其提供的網絡服務。

          漏洞掃描器根據目標系統的操作系統平臺和提供的網絡服務,調用漏洞資料庫中已知的各種漏洞進行逐一檢測,通過對探測響應數據包的分析判斷是否存在漏洞。

          這是陽光明媚的一天,互聯網里風平浪靜,一切都是欣欣向榮。我就是在這樣一個平凡的日子里誕生了。我給自己起了個名字叫超,不過我的師哥師姐們都喜歡叫我小超。從出生的那...

          網上關于SEO優化的知識很多也很雜,很多新手都不知道如何選擇。本來耗子網站里每篇文章都有的詳細步驟的,考慮到很雜,于是耗子對各種SEO優化基礎知識進行了整理,但...

          今天,我給大家講講如何利用電影貼吧引流輕松變現。這個很適合新手。廢話不多說,直接上干貨。每上映一個新片子,只要這個片子有一定的熱度,馬上該片子的貼吧就會出現各種...

          SEO綜合查詢工具哪里找,免費站長SEO綜合查詢工具你真的用對了嗎什么是站長SEO綜合查詢工具?很多學習SEO的新人都會有這樣一個問題,要想了解一個網站,不管是了解自己還是了解競爭對手的網站,要想知道SEO優化效果做得如何,有什么方法,該怎么看呢?要想了解一個網站在各大搜索引擎上的網站建站歷史、網站權重、安全檢測信息、備案信息、收錄信息、頁面TDK信息等,就避免不了要用到站長不可或缺的SEO綜合查...

          在當今互聯網發展的時代,對于很多公司來說,擁有一個好的網站已經成為非常重要的事情。然而,擁有一個好的網站并不意味著它的排名一定好,也就是說需要進行SEO優化。本文將詳細講解如何通過優化SEO關鍵詞排名使網站更受歡迎。一:什么是SEO關鍵詞排名SEO關鍵詞排名指的是網站在搜索引擎中相應關鍵詞的排名情況。一般來說,在搜索引擎中排名越靠前,點擊率就越高。同時,這也是評估網站質量和品牌影響力的重要指標之一...

          白帽SEO優化擴大國內SEO優化市場當前,SEO市場還處于發展階段,缺乏相應的監管機制,導致證券交易市場混亂。許多人為了迅速提高網站的關鍵字排名,經常使用一些黑帽SEO作為欺騙手段,快速達到排名效果。這無疑阻礙了SEO市場的健康發展。1簡單的SEO技巧,追蹤搜索引擎修改算法的意義越來越小搜索引擎優化本身的技術含量越來越低,但它越來越依賴于相關從業力和技術。根據網上對SEO的討論,基本方法還是以前的...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>