一、SQL注入php
SQL注入是一種惡意攻擊,用戶利用在表單字段輸入SQL語句的方式來影響正常的SQL執行。還有一種是經過system()或exec()命令注入的,它具備相同的SQL注入機制,但只針對shell命令。html
防止SQL注入 mysql
使用mysql_real_escape_string()過濾數據web
手動檢查每一數據是否爲正確的數據類型sql
使用預處理語句並綁定變量shell
使用準備好的預處理語句瀏覽器
分離數據和SQL邏輯安全
預處理語句將自動過濾服務器
二、XSS攻擊cookie
XSS(跨站點腳本攻擊)是一種攻擊,由用戶輸入一些數據到你的網站,其中包括客戶端腳本(一般JavaScript)。若是你沒有過濾就輸出數據到另外一個web頁面,這個腳本將被執行。
致使
煩人的彈窗
刷新或重定向
損壞網頁或表單
竊取cookie
AJAX
防止XSS攻擊,使用PHP的htmlentities()函數過濾再輸出到瀏覽器
三、會話捕獲和劫持
若是會話ID存儲在Cookie中,攻擊者能夠經過XSS和JavaScript竊取。若是會話ID包含在URL上,也能夠經過嗅探或者從代理服務器那得到。
防止會話捕獲和劫持
更新ID
使用會話,請確保用戶使用SSL
四、跨站點請求僞造(CSRF)
CSRF攻擊,是指一個頁面發出的請求,看起來就像是網站的信任用戶,但不是故意的
防止跨站點請求僞造
確保用戶來自你的表單,而且匹配每個你發送出去的表單。主要有兩點:
對用戶會話採用適當的安全措施,例如:給每個會話更新id和用戶使用SSL。
生成另外一個一次性的令牌並將其嵌入表單,保存在會話中(一個會話變量),在提交時檢查它。
五、代碼注入
防止代碼注入
過濾用戶輸入
在php.ini中設置禁用allow_url_fopen和allow_url_include。這將禁用require/include/fopen的遠程文件。