通過(guò)一個(gè)安全檢查(過(guò)濾,凈化)的過(guò)程,可以梳理未知的人或物,使其變得可信任。被劃分出來(lái)的具有不同信任級(jí)別的區(qū)域,我們成為信任域,劃分兩個(gè)不同信任域之間的邊界,我們稱(chēng)之為信任邊界。數(shù)據(jù)從高等級(jí)的信任域流向低等級(jí)的信任域,是不需要經(jīng)過(guò)安全檢查的;數(shù)據(jù)從低等級(jí)的信任域流向高等級(jí)的信任域,是需要經(jīng)過(guò)信任邊界的安全檢查。
安全問(wèn)題的本質(zhì)是信任的問(wèn)題。一切的安全方案設(shè)計(jì)的基礎(chǔ),都是建立在信任關(guān)系上的。我們必須相信一些東西,必須要有一些最基本的假設(shè),安全方案才能得以建立。
安全的三要素是安全的基本組成元素,分別為:機(jī)密性。機(jī)密性要求數(shù)據(jù)內(nèi)容不能泄露,加密是實(shí)現(xiàn)機(jī)密性要求的常見(jiàn)手段。如果不將文件存在抽屜里,而是放在透明的盒子里,那么雖然無(wú)法得到這個(gè)文件,但是文件的內(nèi)容將會(huì)被泄露。完整性。完整性則要求保護(hù)數(shù)據(jù)內(nèi)容是完整,沒(méi)有被篡改的。常見(jiàn)的保證一致性的技術(shù)手段是數(shù)字簽名??捎眯浴?捎眯砸蟊Wo(hù)資源是“隨需而得”。舉例來(lái)說(shuō),假如有100個(gè)車(chē)位,有一天一個(gè)壞人搬了100塊大石頭將車(chē)位全占了,那么停車(chē)場(chǎng)無(wú)法再提供正常服務(wù)。在安全領(lǐng)域中叫做拒絕服務(wù)攻擊,簡(jiǎn)稱(chēng)DoS(Denial of Service)。拒絕服務(wù)攻擊破壞的是安全的可用性。
Secure By Default原則。實(shí)際上,Secure By Default原則,也可以歸納為白名單,黑名單的思想。如果更多地使用白名單,那么系統(tǒng)就會(huì)變得更安全。
最小權(quán)限原則。最小原則要求系統(tǒng)只授予主體必要的權(quán)限,而不要過(guò)度授權(quán),這樣能有效地減少系統(tǒng),網(wǎng)絡(luò),應(yīng)用,數(shù)據(jù)庫(kù)出錯(cuò)的機(jī)會(huì)。如果網(wǎng)站只提供Web服務(wù),只允許開(kāi)啟80,443端口,屏蔽其它端口。
縱深防御原則。要在各個(gè)不同層面,不同方面實(shí)施安全方案,避免出現(xiàn)疏漏,不同安全方案之間需要相互配合,構(gòu)成一個(gè)整體;要在正確的地方做正確的事情,即:在解決根本問(wèn)題的地方實(shí)施針對(duì)性的安全方案。
數(shù)據(jù)與代碼分離原則這一原則適用于各種由于“注入”而引發(fā)安全問(wèn)題的場(chǎng)景。實(shí)際上,緩沖區(qū)溢出,也可以認(rèn)為是程序違背了這一原則的后果——程序在?;蛘叨阎?,將用戶數(shù)據(jù)當(dāng)做代碼執(zhí)行,混淆了代碼與數(shù)據(jù)的邊界,從而導(dǎo)致安全問(wèn)題的發(fā)生。
不可預(yù)測(cè)性原則。微軟使用的ASLR技術(shù),在較新版本的Linux內(nèi)核中也支持。在ASLR的控制下,一個(gè)程序每次啟動(dòng)時(shí),其進(jìn)程的?;范疾幌嗤?,具有一定的隨機(jī)性,對(duì)于攻擊者來(lái)說(shuō),這就是“不可預(yù)測(cè)性”。不可預(yù)測(cè)性,能有效地對(duì)抗基于篡改,偽造的攻擊。不可預(yù)測(cè)性的實(shí)現(xiàn)往往需要用到加密算法,隨機(jī)數(shù)算法,哈希算法,好好利用這條規(guī)則,在設(shè)計(jì)安全方案時(shí)往往會(huì)事半功倍。
常見(jiàn)WEB安全問(wèn)題。XSS (Cross Site Script),跨站腳本攻擊,因?yàn)榭s寫(xiě)和 CSS (Cascading Style Sheets) 重疊,所以只能叫 XSS。
XSS 的原理是惡意攻擊者往 Web 頁(yè)面里插入惡意可執(zhí)行網(wǎng)頁(yè)腳本代碼,當(dāng)用戶瀏覽該頁(yè)之時(shí),嵌入其中 Web 里面的腳本代碼會(huì)被執(zhí)行,從而可以達(dá)到攻擊者盜取用戶信息或其他侵犯用戶安全隱私的目的。XSS 的攻擊方式千變?nèi)f化,但還是可以大致細(xì)分為幾種類(lèi)型:
非持久型XSS。也叫反射型 XSS 漏洞,一般是通過(guò)給別人發(fā)送帶有惡意腳本代碼參數(shù)的 URL,當(dāng) URL 地址被打開(kāi)時(shí),特有的惡意代碼參數(shù)被 HTML 解析、執(zhí)行。
持久型XSS。持久型 XSS 攻擊不需要誘騙點(diǎn)擊,黑客只需要在提交表單的地方完成注入即可,但是這種 XSS 攻擊的成本相對(duì)還是很高。
未經(jīng)驗(yàn)證的跳轉(zhuǎn)XSS。一些場(chǎng)景是后端需要對(duì)一個(gè)傳進(jìn)來(lái)的待跳轉(zhuǎn)的 URL 參數(shù)進(jìn)行一個(gè) 302 跳轉(zhuǎn),可能其中會(huì)帶有一些用戶的敏感(cookie)信息。
CSRF。CSRF(Cross-Site Request Forgery),名為:跨站請(qǐng)求偽造攻擊。
那么 CSRF 到底能夠干嘛呢?你可以這樣簡(jiǎn)單的理解:攻擊者可以盜用你的登陸信息,以你的身份模擬發(fā)送各種請(qǐng)求。攻擊者只要借助少許的社會(huì)工程學(xué)的詭計(jì)。例如通過(guò) QQ 等聊天軟件發(fā)送的鏈接(有些還偽裝成短域名,用戶無(wú)法分辨),攻擊者就能迫使 Web 應(yīng)用的用戶去執(zhí)行攻擊者預(yù)設(shè)的操作。例如,當(dāng)用戶登錄網(wǎng)絡(luò)銀行去查看其存款余額,在他沒(méi)有退出時(shí),就點(diǎn)擊了一個(gè) QQ 好友發(fā)來(lái)的鏈接,那么該用戶銀行帳戶中的資金就有可能被轉(zhuǎn)移到攻擊者指定的帳戶中。
所以遇到 CSRF 攻擊時(shí),將對(duì)終端用戶的數(shù)據(jù)和操作指令構(gòu)成嚴(yán)重的威脅。當(dāng)受攻擊的終端用戶具有管理員帳戶的時(shí)候,CSRF 攻擊將危及整個(gè) Web 應(yīng)用程序。
CSRF 攻擊必須要有三個(gè)條件 :
1. 用戶已經(jīng)登錄了站點(diǎn) A,并在本地記錄了 cookie
2 . 在用戶沒(méi)有登出站點(diǎn) A 的情況下(也就是 cookie 生效的情況下),訪問(wèn)了惡意攻擊者提供的引誘危險(xiǎn)站點(diǎn) B (B 站點(diǎn)要求訪問(wèn)站點(diǎn)A)。
3 . 站點(diǎn) A 沒(méi)有做任何 CSRF 防御
預(yù)防 CSRF。CSRF 的防御可以從服務(wù)端和客戶端兩方面著手,防御效果是從服務(wù)端著手效果比較好,現(xiàn)在一般的 CSRF 防御也都在服務(wù)端進(jìn)行。服務(wù)端的預(yù)防 CSRF 攻擊的方式方法有多種,但思路上都是差不多的,主要從以下兩個(gè)方面入手 :一方面是正確使用 GET,POST 請(qǐng)求和 cookie;另一方面在非 GET 請(qǐng)求中增加 token。
CSRF 的防御可以根據(jù)應(yīng)用場(chǎng)景的不同自行選擇。CSRF 的防御工作確實(shí)會(huì)在正常業(yè)務(wù)邏輯的基礎(chǔ)上帶來(lái)很多額外的開(kāi)發(fā)量,但是這種工作量是值得的,畢竟用戶隱私以及財(cái)產(chǎn)安全是產(chǎn)品最基礎(chǔ)的根本。
SQL 注入。SQL 注入漏洞(SQL Injection)是 Web 開(kāi)發(fā)中最常見(jiàn)的一種安全漏洞。攻擊者利用這個(gè)漏洞,可以訪問(wèn)或修改數(shù)據(jù),或者利用潛在的數(shù)據(jù)庫(kù)漏洞進(jìn)行攻擊。
而造成 SQL 注入的原因是因?yàn)槌绦驔](méi)有有效的轉(zhuǎn)義過(guò)濾用戶的輸入,使攻擊者成功的向服務(wù)器提交惡意的 SQL 查詢代碼,程序在接收后錯(cuò)誤的將攻擊者的輸入作為查詢語(yǔ)句的一部分執(zhí)行,導(dǎo)致原始的查詢邏輯被改變,額外的執(zhí)行了攻擊者精心構(gòu)造的惡意代碼。
CSRF 攻擊如何預(yù)防呢?防止 SQL 注入主要是不能允許用戶輸入的內(nèi)容影響正常的 SQL 語(yǔ)句的邏輯,當(dāng)用戶的輸入信心將要用來(lái)拼接 SQL 語(yǔ)句的話,我們應(yīng)該永遠(yuǎn)選擇不相信,任何內(nèi)容都必須進(jìn)行轉(zhuǎn)義過(guò)濾,當(dāng)然做到這個(gè)還是不夠的,下面列出防御 SQL 注入的幾點(diǎn)注意事項(xiàng):
嚴(yán)格限制Web應(yīng)用的數(shù)據(jù)庫(kù)的操作權(quán)限,給此用戶提供僅僅能夠滿足其工作的最低權(quán)限,從而大限度的減少注入攻擊對(duì)數(shù)據(jù)庫(kù)的危害;后端代碼檢查輸入的數(shù)據(jù)是否符合預(yù)期,嚴(yán)格限制變量的類(lèi)型,例如使用正則表達(dá)式進(jìn)行一些匹配處理;對(duì)進(jìn)入數(shù)據(jù)庫(kù)的特殊字符(',",\,<,>,&,*,; 等)進(jìn)行轉(zhuǎn)義處理,或編碼轉(zhuǎn)換;所有的查詢語(yǔ)句建議使用數(shù)據(jù)庫(kù)提供的參數(shù)化查詢接口,參數(shù)化的語(yǔ)句使用參數(shù)而不是將用戶輸入變量嵌入到 SQL 語(yǔ)句中,即不要直接拼接 SQL 語(yǔ)句。
DDoS 攻擊。DDoS 又叫分布式拒絕服務(wù),全稱(chēng) Distributed Denial of Service。其原理就是利用大量的請(qǐng)求造成資源過(guò)載,導(dǎo)致服務(wù)不可用,這個(gè)攻擊應(yīng)該不能算是安全問(wèn)題,這應(yīng)該算是一個(gè)另類(lèi)的存在,因?yàn)檫@種攻擊根本就是耍流氓的存在,是“傷敵一千,自損八百”的行為。DDos 攻擊從層次上可分為網(wǎng)絡(luò)層攻擊與應(yīng)用層攻擊,從攻擊手法上可分為快型流量攻擊與慢型流量攻擊,但其原理都是造成資源過(guò)載,導(dǎo)致服務(wù)不可用。
主要分類(lèi):網(wǎng)絡(luò)層的 DDoS 攻擊究其本質(zhì)其實(shí)是無(wú)法防御的,我們能做得就是不斷優(yōu)化服務(wù)本身部署的網(wǎng)絡(luò)架構(gòu),以及提升網(wǎng)絡(luò)帶寬。應(yīng)用層 DDoS 攻擊不是發(fā)生在網(wǎng)絡(luò)層,是發(fā)生在 TCP 建立握手成功之后,應(yīng)用程序處理請(qǐng)求的時(shí)候,現(xiàn)在很多常見(jiàn)的 DDoS 攻擊都是應(yīng)用層攻擊。
應(yīng)用層的防御有時(shí)比網(wǎng)絡(luò)層的更難,因?yàn)閷?dǎo)致應(yīng)用層被 DDoS 攻擊的因素非常多,有時(shí)往往是因?yàn)槌绦騿T的失誤,導(dǎo)致某個(gè)頁(yè)面加載需要消耗大量資源,有時(shí)是因?yàn)橹虚g件配置不當(dāng)?shù)鹊取?br />而應(yīng)用層 DDoS 防御的核心就是區(qū)分人與機(jī)器(爬蟲(chóng)),因?yàn)榇罅康恼?qǐng)求不可能是人為的,肯定是機(jī)器構(gòu)造的。因此如果能有效的區(qū)分人與爬蟲(chóng)行為,則可以很好地防御此攻擊。
最后的總結(jié):Web 安全的對(duì)于擁有企業(yè)網(wǎng)站和搭建網(wǎng)站的人員來(lái)說(shuō)是一個(gè)非常重要的課題。以上跟大家介紹了常見(jiàn)Web的安全問(wèn)題以及相關(guān)的三種安全防御知識(shí),希望大家以后的
網(wǎng)站建設(shè)工作中不要誤入踩雷,希望對(duì)大家有所幫助!
分享題目:網(wǎng)站建設(shè)常見(jiàn)的Web安全問(wèn)題及防御策略
新聞來(lái)源:http://jinyejixie.com/news/207386.html
網(wǎng)站建設(shè)、網(wǎng)絡(luò)推廣公司-創(chuàng)新互聯(lián),是專(zhuān)注品牌與效果的網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷(xiāo)seo公司;服務(wù)項(xiàng)目有網(wǎng)站建設(shè)等
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)