[網網站建設]_什么是網站安全?常見網站安全的
5種簡單的方法來提高您的網站頁面速度
在快節奏的在線世界中,公司網站的速度給客戶留下了第一印象。緩慢的加載時間是不可接受的。盡管您的服務或網站有多么出色,但如今客戶仍然沒有耐心參加。公司需要7秒鐘或更短的時間才能激怒,客戶將搜索轉移到其他地方。無論用戶在何處,他們通常都會在移動性更強的情況下放大=減少耐心。
網站安全要求在設計和使用的各個方面保持警惕。這篇介紹性文章不會使您成為網站安全專家,但是它將幫助您了解威脅的來源以及如何針對最常見的攻擊來增強網站應用程序。
| 先決條件: | 基本的計算機技能。 |
|---|---|
| 目標: | 了解對網站應用程序安全性最常見的威脅,以及如何減少網站被黑客入侵的風險。提供有效的網站安全性解決方案。 |
什么是網站安全?
互聯網是危險的地方!通常,我們會聽到由于拒絕服務攻擊而無法使用網站,或者在其首頁上顯示經過修改(且通常是有害的)信息的網站。在其他備受矚目的案例中,數百萬的密碼,電子郵件地址和信用卡詳細信息會向公眾發布,使網站用戶面臨個人尷尬和風險。財務損失。
網站安全的目標是防止這些類型的攻擊。更正式地講,網站安全是保護網站免遭未經授權的訪問,使用,修改,破壞或破壞的行為/做法。
網站的有效安全性需要在整個網站上進行設計工作:在網站應用程序中,網站服務器配置中,在創建和更新密碼的策略中以及在代碼端-client。盡管所有這些聽起來都很令人擔憂,但好消息是,如果您使用的是服務器端網站框架,則默認情況下它將包含強大的,經過深思熟慮的防御機制,以應對多種最常見的攻擊。通過配置網站服務器,例如啟用HTTPS,可以緩解其他攻擊。最后,還有公開可用的漏洞分析工具,可以幫助您確定是否犯了明顯的錯誤。
本文的其余部分詳細介紹了對網站最常見的威脅,并提供了一些簡單的步驟來保護您的網站。
注意:這是一篇介紹性文章,旨在幫助您考慮網站的安全性。這并不詳盡。

網站安全的威脅
本節僅列出了一些最常見的網站威脅以及如何緩解這些威脅。在閱讀時,請注意,當網站應用程序信任或對瀏覽器的數據不夠可疑時,威脅將如何出現!
跨站腳本(XSS)
XSS是用于描述攻擊類別的術語,該類別允許攻擊者通過網站注入客戶端執行的腳本,以針對其他用戶的網站瀏覽器。由于注入的代碼來自網站,因此網站瀏覽器認為它是安全的,因此可以執行將身份驗證cookie從用戶傳遞給攻擊者的操作。一旦攻擊者獲得了該cookie,他就可以像被攻擊的用戶一樣登錄到該站點,并可以執行該用戶可以做的任何事情。根據發生攻擊的站點,這可能包括訪問信用卡詳細信息,聯系信息,更改密碼等。
注意:與其他類型相比,XSS漏洞歷來是最常見的漏洞。
請求站點將注入的腳本返回到網站瀏覽器的主要方法有兩種,這些方法稱為反射性 XMS漏洞和持久性 XSS漏洞。
當傳遞給服務器的用戶內容立即返回,保持不變并顯示在瀏覽器中時,就會發生一個反映的XSS漏洞-加載新頁面時,將執行原始內容中的所有腳本!
以某個站點中的搜索功能為例,在該站點中,搜索詞被編碼為URL中的參數,并且這些詞與結果一起永久顯示。攻擊者可以構建包含惡意腳本作為參數的搜索鏈接(例如:http://mysite.com?q=beer<script src="http://sitedangereux.com/malicieux.js"></script>),然后通過電子郵件將其發送給其他用戶。如果目標用戶單擊此“有趣的鏈接”,則在顯示搜索結果時將執行腳本。如前所述,這為攻擊者提供了使用受害者帳戶登錄網站所需的所有信息-可能以該用戶的身份購物或訪問聯系人列表。永久性 XSS漏洞將是一個惡意腳本,該惡意腳本被存儲在網站上,然后在不做任何修改的情況下被其他用戶稍候顯示并在其不知情的情況下執行。
例如,接受包含純HTML代碼的注釋的聊天屏幕可以存儲攻擊者的惡意腳本。當顯示注釋時,腳本將被執行,然后可以將訪問用戶帳戶所需的信息發送給攻擊者。這種攻擊方法極為普遍和有效,因為攻擊者無需與受害者建立直接關系。
使用POST或發送數據時GET 是XSS漏洞的最常見來源,來自網站瀏覽器的任何數據都可能受到攻擊(包括瀏覽器顯示的cookie數據或已加載和顯示的用戶文件)。
防范XSS漏洞的最佳方法是刪除或禁用可能包含執行代碼指令的任何標記。為了這包括HTML標記,如<script>,<object>,<embed>,和<link>。
有必要處理用戶輸入的數據,以確保他既不會執行腳本也不會干擾站點的正常運行(此過程稱為 英文輸入清理)。默認情況下,許多框架都在表單條目上提供此驗證。

SQL注入
SQL注入是一個漏洞,除了解防止網站sql數據庫注入及解決辦法(參考),攻擊者可以利用該漏洞在數據庫上執行欺詐性的SQL代碼,從而不管用戶的權限如何,都可以訪問,修改或刪除數據。成功的注入攻擊可以允許篡改帳戶,創建具有管理員權限的帳戶,訪問服務器的所有數據或對數據進行修改/破壞以使其無法使用。
當用戶輸入傳遞到可以更改查詢方向的基礎SQL查詢時,就會出現此漏洞。例如,在下面的代碼中,該代碼應列出所有具有特定名稱(userName)的用戶,并且這些代碼均來自HTML表單:
語句=“ SELECT * FROM用戶,其中name ='” userName “';”
如果用戶輸入正確的名稱,它將按預期工作。但是,惡意用戶可以完全通過更改此SQL查詢的含義來獲得以下查詢,只需添加以下粗體字作為名稱即可,此修改后的查詢將創建一個有效的SQL查詢,該查詢將刪除該SQL查詢的名稱。表格,users然后選擇表格中的所有數據userinfo(顯示每個用戶的信息)。由于注入的文本('a';)的開始將完成原始查詢(這' 是在SQL中用于分隔文本字符串的符號),因此所有這一切都成為可能。
SELECT * FROM users where where name =' a'; DROP TABLE users; SELECT * FROM userinfo WHERE't'='t ';
避免這種攻擊的方法是確保從用戶傳輸到SQL查詢的任何輸入都不會更改此查詢的性質。一種方法是在SQL中具有特殊含義的情況下,從用戶輸入中轉義所有字符。
注意:SQL查詢將符號'作為文本字符串的開頭和結尾。通過添加字符,我們將“轉義”該符號,并告訴SQL將其視為字符串的簡單部分。
在下面的請求中,我們對字符'進行了轉義。因此,SQL將把完整的字符串(粗體)解釋為一個名稱(確實是一個奇怪的名稱,但無害)。
SELECT * FROM users where where name =' a '; DROP TABLE users; SELECT * FROM userinfo WHERE 't '= 't' ;
網站框架通常負責為您轉義這些字符。例如,Django確保從用戶傳遞到模型的任何輸入均被轉義。
注意:本節主要參考Wikipedia的信息。
跨站點偽造請求(CSRF)
CSRF攻擊允許惡意用戶使用另一用戶的標識符執行操作,而無需通知或同意該用戶。
最好用一個例子來說明這種攻擊。John是惡意用戶,他知道特定站點允許經過身份驗證的用戶使用HTTP POST請求(包括帳號和金額)向特定帳戶匯款。John構建了一個表格,其中包括他的帳號和隱藏(不可見)字段中的金額,并將其傳輸給該站點的另一個用戶(將驗證按鈕偽裝成指向站點的鏈接,以“致富”。)
如果用戶單擊驗證按鈕,則包含交易信息的HTTP POST請求以及網站瀏覽器與站點關聯的cookie都將傳輸到服務器(添加到請求中的與站點關聯的cookie是正常的瀏覽器行為)。服務器將檢查身份驗證cookie,并使用它來確定用戶是否登錄,從而允許交易。
最后,在連接到貨幣兌換網站的同時單擊驗證按鈕的任何用戶都將授權交易。約翰會發財!
注意:這里的技巧是John不需要訪問用戶的cookie(或其標識符),網站瀏覽器將存儲此信息,并自動將其包括在對關聯服務器的所有請求中。
防止此類攻擊的一種方法是,服務器請求每個POST請求都具有服務器生成的且特定于用戶的秘密(該秘密將在發送交易表單時由服務器傳輸)。這種方法阻止John創建自己的表單,因為他不知道服務器提供給用戶的秘密。即使他發現了這個秘密并為特定用戶創建了一個表單,他也無法使用該表單來攻擊其他用戶。
網站框架通常包括防止CSRF攻擊的機制。
其他威脅
其他常見的攻擊和漏洞包括:
點擊劫持。在這種攻擊中,惡意用戶轉移了針對可見網站的點擊,并將其發送到隱藏在下面的頁面。例如,可以使用此技術來顯示銀行的合法站點,但可以在攻擊者控制的不可見<iframe>中捕獲身份驗證標識符。否則,它可以使用戶單擊站點上的可見按鈕,但是這樣做實際上會無意間單擊了另一個按鈕。作為防御,您的網站可以通過配置正確的HTTP標頭來防止自己被其他網站的iframe包含。
拒絕服務(DoS)。拒絕服務通常是通過向目標站點加載虛假請求來實現的,從而使合法用戶無法訪問該站點。這些請求可以很簡單,也可以單獨需要大量資源(例如:加載重文件等)。防御這種攻擊的方法通常是基于識別和阻止不良流量,同時允許合法消息的到達。這些防御通常集成在網站服務器的上游或上游(它們不是網站應用程序的一部分)。
通過目錄和文件中的導航發現。在此攻擊家族中,惡意用戶將嘗試訪問不應訪問的網站服務器上的文件。當用戶可以傳遞包含文件系統中導航字符的文件名時,就會發生此漏洞(例如:)../../。解決的辦法是在使用前對入口進行消毒。
包括文件。在這種攻擊中,用戶可以指定要在傳輸到服務器的數據中顯示或執行的“非自愿”文件。加載后,可以在網站服務器或客戶端上運行此文件(導致XSS攻擊)。解決方案是在使用之前檢查條目。
注入命令。命令注入攻擊使惡意用戶可以在主機系統上執行欺詐性系統命令。解決方案是在系統調用中使用每個用戶輸入之前對其進行檢查。
還有很多。有關更詳盡的列表,您可以查閱網站安全漏洞類別(Wikipedia)和Attacks類別(來自OWASP項目)。
一些關鍵信息
當網站應用程序信任來自網站瀏覽器的數據時,上面引用的大多數攻擊都會成功。為了提高網站的安全性,無論采取什么其他措施,都應在查看,在SQL查詢中使用或在系統或文件系統調用中傳遞之前,清除所有用戶輸入的內容。
重要提示:關于網站安全性,要記住的最重要一課是永遠不要信任網站瀏覽器中的數據。這包括GET在URL中帶有參數的請求,隨其發送的數據POST,HTTP標頭,cookie,用戶加載的文件等。始終檢查并清理數據。總是期待最壞的情況。
您可以設置其他一些要點:
使用有效的密碼管理策略。鼓勵使用頻繁更新的強密碼。考慮到您網站上的兩因素身份驗證(用戶除了密碼外,還必須提供通常由物理硬件提供的另一種身份驗證代碼,只有用戶才有,例如發送到短信)。
配置您的網站服務器以使用 HTTPS和HTTP嚴格傳輸安全性(HSTS)。HTTPS加密在客戶端和服務器之間傳輸的數據。這確保了認證數據,cookie,與之交換的數據POST以及標頭信息對攻擊者的可用性降低。
隨時了解最新威脅(此處是OWASP的最新列表),并始終首先擔心最常見的漏洞。
使用漏洞發現工具 自動在您的站點上進行錯誤搜索(您的站點可能還會提供buf賞金計劃來檢測錯誤,就像Mozilla在此處所做的那樣)。
僅存儲和顯示必要的數據。例如,如果您的用戶必須存儲諸如銀行信息之類的敏感數據,則僅顯示足以被用戶識別的內容,但不足以被攻擊者復制并在其他站點上使用的內容。現在最常用的方法是只顯示信用卡號的后四位。
另外選擇優良的網站框架可以幫助緩解許多最常見的漏洞。
如何確保您的網站安全
全球約有54%的公司表示,他們在過去一年中至少經歷了一次攻擊。只有38%的企業表示他們已準備好應對網絡攻擊。