PHP 網絡安全

PHP 網絡安全

1.安全相關配置:

  • 1.惡意攻擊,暴力破解型 使用防火牆等禁止訪問 使用HTTLS安全驗證等手段
  • 2.減小PHP內置模塊數量,減小加載項
  • 3.開啓expose_php = off 禁止php在http頭內暴漏php及版本號
  • 4.設置關閉PHP錯誤信息,記錄錯誤信息日誌
  • 5.禁止遠程運行代碼 allow_url_fpen = off
  • 6.禁止PHP中危險函數 disable_functions=
  • 7.限制PHP訪問文件系統 open_basedir = '項目文件路徑'
  • 8.限制文件/目錄訪問權限
  • 9.使用linux charrt命令保護重要文件不被修改複製重命名等操做
  • 10.開啓PHP安全模式 safe_mode = ON;
  • 11.關閉註冊全局變量 register_globals = Off 獲取GET提交的變量var,那麼就要用$_GET[‘var’]來進行獲取
  • 12.開啓magic_quotes_gpc 來方式sql注入 或者 手動轉義字符.

2.SQL注入

  • (1)不用用戶名和密碼 使用 ‘or 1=’1′ 或 ‘or’=’or」 等方式. - (2)在不輸入密碼的狀況下,利用某用戶。 where user_name=’ benwin’#’ and ...
  • (3)猜解某用戶密碼 where user_name=’ benwin’ and left(pwd,1)=’p’#’ and pwd =’$pwd'」;
  • (4)插入數據時提權 「update phpben set `user_name` =’benwin’,level=5#’, level=1″
  • (5)惡意更新和刪除
  • (7)union、join等
  • (8)通配符號%
    SQL注入原理是利用sql中的特殊符號,固定字符及二進制解析等達到 跳過驗證,或者添加修改數據,惡意更新刪除
    主要防範措施:
    1).addslashes 和stripslashes。    預約義字符轉義.php.ini是否開啓了magic_quotes_gpc=ON,開啓若使用addslashes會出現重複。
    2).mysql_escape_string() 和 mysql_real_escape_string()
    mysql_real_escape_string 必須在(PHP 4 >= 4.3.0, PHP 5)的狀況下才能使用。不然只能用 mysql_escape_string()
    mysql_escape_string()和mysql_ real _escape_string()區別在於後者會判斷當前數據庫鏈接字符集,換句話說在沒有鏈接數據庫的前提下會出現錯誤
    3).防注入則要先知道有哪些注入字符或關鍵字,常見的mysql注入字符有 : **
    (1).字符界定符號如「’」、「」」;
    (2).邏輯關鍵字如「and」、「or」;
    (3).mysql注悉字符如「#」,「– 」,「/
    /」;
    (4).mysql通配符「%」,「_」;
    (5).mysql關鍵字:「select|insert|update|delete|*|union|join|into|load_file|outfile」
    **4).使用PDO綁定參數作預處理 **

3.XSS攻擊

XSS:cross site script 跨站腳本 利用填寫數據內容 插入腳本 獲取相應信息,或者達到某種目的.
**原理:填寫的信息爲腳本信息代碼 **
處理方式:
1.使php中提到的 實體轉義 strip_tags()、htmlspecialchars()、htmlentities()等函數能夠起做用
2.過濾或移除特殊的Html,JavaScript標籤。
php

4.會話固定攻擊

Session固定攻擊(Session Fixation)
攻擊者預先設定session id,讓合法用戶使用這個session id來訪問被攻擊的應用程序,一旦用戶的會話ID被成功固定,攻擊者就能夠經過此session id來冒充用戶訪問應用程序。
例如:
1.攻擊者訪問網站www.aa.com 獲取他本身的session id,如:SID=123;
2.攻擊者給目標用戶發送連接,並帶上本身的session_id,如:http:///www.aa.com/?SID=123;
3.目標用戶點擊了http:///www.aa.com/?SID=123 像往常同樣,輸入本身的用戶名、密碼登陸到網站;
4.因爲服務器的session id不改變,如今攻擊者點擊http:///www.aa.com/?SID=123 他就擁有了目標用戶的身份,能夠隨心所欲了。html

處理方式:
1.按期更改session id
session_regenerate_id(TRUE);//刪除舊的session文件,每次都會產生一個新的session id。默認false,保留舊的session
2.更改session的名稱
session的默認名稱是PHPSESSID,此變量會保存在cookie中,若是攻擊者不抓包分析,就不能猜到這個名稱,阻擋部分攻擊 session_name("mysessionid");
3.關閉透明化session id
透明化session id指當瀏覽器中的http請求沒有使用cookie來制定session id時,sessioin id使用連接來傳遞 int_set("session.use_trans_sid", 0);
4.只從cookie檢查session id
int_set("session.use_cookies", 1);//表示使用cookies存放session id
int_set("session.use_only_cookies", 1);//表示只使用cookies存放session id
5.使用URL傳遞隱藏參數
token驗證
$_SESSION["sid"] = $sid;//攻擊者雖然能獲取session數據,可是沒法得知$sid的值,只要檢查sid的值,就能夠確認當前頁面是不是web程序本身調用的mysql

5.會話捕獲和劫持

攻擊者利用各類手段來獲取目標用戶的session id。一旦獲取到session id,那麼攻擊者能夠利用目標用戶的身份來登陸網站,獲取目標用戶的操做權限。
防範方法:
1.按期更改session id
2.更改session的名稱
3.關閉透明化session id
4.設置HttpOnly。經過設置Cookie的HttpOnly爲true,能夠防止客戶端腳本訪問這個Cookie,從而有效的防止XSS攻擊。
linux

6.跨網站請求僞造攻擊(Cross Site Request Forgeries, CSRF)

攻擊者僞造目標用戶的HTTP請求,而後此請求發送到有CSRF漏洞的網站,網站執行此請求後,引起跨站請求僞造攻擊。攻擊者利用隱蔽的HTTP鏈接,讓目標用戶在不注意的狀況下單擊這個連接,因爲是用戶本身點擊的,而他又是合法用戶擁有合法權限,因此目標用戶可以在網站內執行特定的HTTP連接,從而達到攻擊者的目的。
它與XSS的攻擊方法不一樣,XSS利用漏洞影響站點內的用戶,攻擊目標是同一站點內的用戶者,而CSRF 經過假裝成受害用戶發送惡意請求來影響Web系統中受害用戶的利益。
防範方法:
一、檢查網頁的來源
二、檢查內置的隱藏變量
三、使用POST,不要使用GET,處理變量也不要直接使用$_REQUEST
web

7.文件上傳漏洞

攻擊者利用程序缺陷繞過系統對文件的驗證與處理策略將惡意代碼上傳到服務器並得到執行服務器端命令的能力。
經常使用的攻擊手段有:
上傳Web腳本代碼,Web容器解釋執行上傳的惡意腳本;
上傳Flash跨域策略文件crossdomain.xml,修改訪問權限(其餘策略文件利用方式相似);
上傳病毒、木馬文件,誘騙用戶和管理員下載執行;
上傳包含腳本的圖片,某些瀏覽器的低級版本會執行該腳本,用於釣魚和欺詐。
總的來講,利用的上傳文件要麼具有可執行能力(惡意代碼),要麼具有影響服務器行爲的能力(配置文件)。
防範方法:
1.文件上傳的目錄設置爲不可執行;
2.判斷文件類型,設置白名單。對於圖片的處理,可使用壓縮函數或者resize函數,在處理圖片的同時破壞圖片中可能包含的HTML代碼;
3.使用隨機數改寫文件名和文件路徑:一個是上傳後沒法訪問;再來就是像shell、.php 、.rar和crossdomain.xml這種文件,都將由於重命名而沒法攻擊;
4.單獨設置文件服務器的域名:因爲瀏覽器同源策略的關係,一系列客戶端攻擊將失效,好比上傳crossdomain.xml、上傳包含Javascript的XSS利用等問題將獲得解決。
5.文件上傳單獨處理。使用第三方雲存儲,解決訪問效率,安全,硬盤等問題
sql

8 緩衝區漏出攻擊

參見 緩衝區漏出攻擊shell

相關文章
相關標籤/搜索