常規的安全問題主要分爲如下幾大類php
一,跨站腳本攻擊(XSS)html
指的是攻擊者向web頁面注入惡意的Javascript代碼,而後提交給服務器,可是服務器並無作校驗和轉義等處理,隨即服務器的響應頁就被植入了那些惡意的代碼。mysql
應用場景:web
(1)通常都見於客戶端的表單信息的提交,例如在表單address一欄,用戶輸入‘<script>alert('攻擊頁面')</script>’,提交的時候服務器並無校驗,在新的響應頁面,當瀏覽器解析到script標籤的時候,這段代碼就會直接運行。以上只是一個簡單的例子,這段代碼能夠換成任意的惡意代碼。sql
(2)url中注入script數據庫
正常訪問下的URL :http://www.vulnerable.site/welcome.html?name=Jeremy瀏覽器
訪問的URL中注入腳本的:http://www.vulnerable.site/welcome.html?name=<script>alert(document.cookie)</script>安全
分類:服務器
反射型:當帶有惡意性腳本代碼的請求服務器時,未過濾,直接將爲編碼的代碼直接返回給響應頁cookie
持久型:帶有惡性腳本的代碼被保存在web服務器端,每次用戶訪問這個頁面的時候,這個惡性代碼就會被自動執行
解決方法:
(1)輸入過濾;對用戶輸入的內容進行過濾
(2)輸出轉義;對於服務器端返回給客戶端的內容進行轉義,或者是定義一套加密的方法,客戶端依據必定的規則進行解密
二,跨站請求僞造(CSRF)
指的是利用用戶的身份對網站進行某種操做的漏洞。用戶登錄網站A,輸入自身的用戶名和密碼等信息,而後再A站點擊任意連接跳轉到不信任的B網站,而後B網站將獲取用戶的登錄信息,而後攻擊者利用獲取用戶的登錄信息去登錄網站A,網站A將認爲是用戶的合法登錄,而後進行一些違法操做
應用場景:
通常多見於盜取用戶的登錄信息進行轉帳以及修改我的資料等操做
解決方法:
(1)客戶端的請求都換成POST方式
(2)比較經常使用的是token校驗;即在發送請求的時候,在http請求頭中以參數的形式加入一個隨機產生的token,並在服務器端創建一個攔截器來驗證這個token,服務器端會去校驗這個瀏覽器中的token與cookie中存的token是否相等,若是相等則認爲是合法的,這個token是在用戶登錄後,存儲在session或者cookie中。
三,SQL注入
指的是攻擊者將SQL命令插入到Web表單提交,而且服務端沒有通過校驗,拼接sql語句進行執行,形成數據庫的數據泄漏。
應用場景:
黑客獲取數據庫的控制權
解決方法
(1)增長白名單和黑名單驗證。白名單驗證通常指檢驗用戶輸入是否符合預期的類型,長度或者其餘格式標準等。黑名單驗證通常指的是,在用戶的輸入中若是包含明顯惡意的內容,則拒絕該用戶請求
(2)數據轉義。設置php.ini選項magic_quotes_gpc=on,它會將提交的變量中全部的’(單引號),」(雙引號),\(反斜槓),空白字符等都在前面自動加上\。或者採用mysql_real_escape()函數或addslashes()函數進行輸入參數的轉義。