在電商項目中最重要的就是安全問題,這裏就幾點我來進行一個簡單的敘述:
(這裏以我的一個項目實例進行講述,如果有需要源碼,大家可以到碼雲上進行下載)
1. Form表單嚴格過濾:
Int goods_numbe--->強制數據類型--->嚴格的過濾策略
2. Sql注入:
就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。
3. Xss攻擊:
什麼是xss攻擊: XSS又叫跨站腳本攻擊(Cross Site Scripting),我不會告訴他原本是叫CSS的,但是爲了不和我們所用的層疊樣式表(Cascading Style Sheets)CSS搞混。CSS(跨站腳本攻擊),CSS(層疊樣式表)傻傻分不清。所以就叫XSS咯。
相信以上的解釋也不難理解,但爲了再具體些,這裏舉一個簡單的例子,就是留言板。我們知道留言板通常的任務就是把用戶留言的內容展示出來。正常情況下,用戶的留言都是正常的語言文字,留言板顯示的內容也就沒毛病。然而這個時候如果有人不按套路出牌,在留言內容中丟進去一行
<script>alert("hey!you are attacked")</script>
那麼留言板界面的網頁代碼就會變成形如以下:
<html>
<head>
<title>留言板</title>
</head>
<body>
<div id="board">
<script>alert("hey!you are attacked")</script>
</div>
</body>
</html>
那麼這個時候問題就來了,當瀏覽器解析到用戶輸入的代碼那一行時會發生什麼呢?答案很顯然,瀏覽器並不知道這些代碼改變了原本程序的意圖,會照做彈出一個信息框.
xss攻擊的危害: 其實歸根結底,XSS的攻擊方式就是想辦法“教唆”用戶的瀏覽器去執行一些這個網頁中原本不存在的前端代碼。
可問題在於儘管一個信息框突然彈出來並不怎麼友好,但也不至於會造成什麼真實傷害啊。的確如此,但要說明的是,這裏拿信息框說事僅僅是爲了舉個栗子,真正的黑客攻擊在XSS中除非惡作劇,不然是不會在惡意植入代碼中寫上alert(“say something”)的。
在真正的應用中,XSS攻擊可以乾的事情還有很多,這裏舉兩個例子。
- 竊取網頁瀏覽中的cookie值
在網頁瀏覽中我們常常涉及到用戶登錄,登錄完畢之後服務端會返回一個cookie值。這個cookie值相當於一個令牌,拿着這張令牌就等同於證明了你是某個用戶。
如果你的cookie值被竊取,那麼攻擊者很可能能夠直接利用你的這張令牌不用密碼就登錄你的賬戶。如果想要通過script腳本獲得當前頁面的cookie值,通常會用到document.cookie。
試想下如果像空間說說中能夠寫入xss攻擊語句,那豈不是看了你說說的人的號你都可以登錄(不過某些廠商的cookie有其他驗證措施如:Http-Only保證同一cookie不能被濫用)
- 劫持流量實現惡意跳轉
這個很簡單,就是在網頁中想辦法插入一句像這樣的語句:
<script>window.location.href="http://www.baidu.com";</script>
那麼所訪問的網站就會被跳轉到百度的首頁。早在2011年新浪就曾爆出過嚴重的xss漏洞,導致大量用戶自動關注某個微博號並自動轉發某條微博。具體各位可以自行百度.
以下列舉幾個常用的可插入代碼的標籤。
<a οnmοusemοve=’do something here’>
<div οnmοuseοver=‘do something here’>
xss攻擊的幾大類型:
①存儲型XSS,存儲型XSS又被稱爲持久性XSS,存儲型XSS是最危險的一種跨站腳本。存儲型XSS被服務器端接收並存儲,當用戶訪問該網頁時,這段XSS代碼被讀出來響應給瀏覽器。
<script>alert("hey!you are attacked")</script>
當有人在留言內容中插入惡意腳本時,由於服務器要像每一個訪客展示之前的留言內容,所以後面的訪客自然會接收到之前留言中的惡意腳本而不幸躺槍。
②反射型XSS,反射型XSS也被稱爲非持久性XSS,是現在最容易出現的一種XSS漏洞。XSS的Payload一般是寫在URL中,之後設法讓被害者點擊這個鏈接。很簡單,試想下像http://qq.com,http://baidu.com這樣的域名下出現非持久型XSS,那麼在發送釣魚鏈接時就可以通過http://qq.com等域名進行跳轉,一般人一看到http://qq.com之類的域名警惕性會下降,也就更容易上當了。
③DOM型XSS,DOM的全稱爲Document Object Model,即文檔對象模型。基於DOM型的XSS是不需要與服務器交互的,它只發生在客戶端處理數據階段。簡單理解DOM XSS就是出現在javascript代碼中的xss漏洞。
防範手段: 都說知己知彼方能百戰不殆,知道了xss攻擊的原理那麼防禦的方法也就顯而易見了。
- 首先是過濾。對諸如<script>、<img>、<a>等標籤進行過濾。
- 其次是編碼。像一些常見的符號,如<>在輸入的時候要對其進行轉換編碼,這樣做瀏覽器是不會對該標籤進行解釋執行的,同時也不影響顯示效果。
- 最後是限制。通過以上的案例我們不難發現xss攻擊要能達成往往需要較長的字符串,因此對於一些可以預期的輸入可以通過限制長度強制截斷來進行防禦。
4. Csrf:
跨站請求僞造--->表單令牌
5. 大數據問題:
分段--->刷新緩存區
6. 優化問題
前端優化--->Js混編 --->不講js代碼單獨做文件,而是直接寫到html中
減少http請求 ,從而減少服務器壓力--->頁面靜態化--->ob
後端優化--->Mysq選用合適的引擎--->建表--->對錶字段的合適選擇 not nul--->Mysql 語句的優化--->連表查詢 用單表代替連表(前臺)--->索引--->Mysql 讀寫分離 myql log-bin --->數據一致性--->緩存--->Memcache redis