導航:首頁 > 編程語言 > php防止外部提交

php防止外部提交

發布時間:2023-08-20 13:03:14

php開發中值得注意的問題是

php開發過程中,需要注意的安全細節,其實不只是php其它語言通用。
作為PHP程序員,特別是新手,對於互聯網的險惡總是知道的太少,對於外部的入侵有很多時候是素手無策的,他們根本不知道黑客是如何入侵的、提交入侵、上傳漏洞、sql 注入、跨腳本攻擊等等。作為最基本的防範你需要注意你的外部提交,做好第一面安全機制處理防火牆。

規則 1:絕不要信任外部數據或輸入

關於Web應用程序安全性,必須認識到的第一件事是不應該信任外部數據。外部數據(outside data) 包括不是由程序員在PHP代碼中直接輸入的任何數據。在採取措施確保安全之前,來自任何其他來源(比如 GET 變數、表單 POST、資料庫、配置文件、會話變數或Cookie)的任何數據都是不可信任的。

規則 2:禁用那些使安全性難以實施的PHP設置

已經知道了不能信任用戶輸入,還應該知道不應該信任機器上配置 PHP 的方式。例如,要確保禁用 register_globals。如果啟用了 register_globals,就可能做一些粗心的事情,比如使用 $variable 替換同名的 GET 或 POST 字元串。通過禁用這個設置,PHP 強迫您在正確的名稱空間中引用正確的變數。要使用來自表單 POST 的變數,應該引用 $_POST['variable']。這樣就不會將這個特定變數誤會成 cookie、會話或 GET 變數。

規則 3:如果不能理解它,就不能保護它

一些開發人員使用奇怪的語法,或者將語句組織得很緊湊,形成簡短但是含義模糊的代碼。這種方式可能效率高,但是如果您不理解代碼正在做什麼,那麼就無法決定如何保護它。例如,您喜歡下面兩段代碼中的哪一段?

規則 4:「縱深防禦」 是新的法寶

本教程將用示例來說明如何保護在線表單,同時在處理表單的 PHP 代碼中採用必要的措施。同樣,即使使用 PHP regex 來確保 GET 變數完全是數字的,仍然可以採取措施確保 SQL 查詢使用轉義的用戶輸入。縱深防禦不只是一種好思想,它可以確保您不會陷入嚴重的麻煩。既然已經討論了基本規則,現在就來研究第一種威脅:SQL 注入攻擊。

◆防止SQL注入攻擊

在SQL注入攻擊中,用戶通過操縱表單或 GET 查詢字元串,將信息添加到資料庫查詢中。例如,假設有一個簡單的登錄資料庫。這個資料庫中的每個記錄都有一個用戶名欄位和一個密碼欄位。構建一個登錄表單,讓用戶能夠登錄。

② 剛學習PHP,問一下,帝國CMS裡面e/class/connect.php 函數CheckCanPostUrl()

首先global $public_r;首先定義一個全局變數$public_r,這個變數是一個數組,裡面存了一些系統設置,如網站域名等,在這里$public_r['canposturl']是系統設置裡面的「前台允許提交的來源地址」,每一列是一個地址,比如
http://www..com
http://www.google.com
讓我們一行一行分析:
if($public_r['canposturl']){ //如果設置了前台允許提交的來源地址
$r=explode("\r\n",$public_r['canposturl']); //按照換行\r\n切分為一個數組$r,結果應該是
$r = array('http://www..com', 'http://www.google.com');
$count=count($r);//使用數組的count方法統計有多少條地址
$b = 0; //這個變數是當作一個標志,用來判斷
for($i=0;$i<$count;$i++) //
$_SERVER['HTTP_REFERER'] //這個得到的是頁面的來源地址,比如我從http://www.11111.com點擊一個鏈接到http://www.2222.com,那麼http://www.2222.com使用$_SERVER['HTTP_REFERER'] 得到的就是http://www.11111.com
for($i=0;$i<$count;$i++)
if(strstr($_SERVER['HTTP_REFERER'],$r[$i]))

這個將頁面的來源地址循環和「前台允許提交的來源地址」數組$r裡面的每一條對比,如果存在就跳出循環並設置$b=1,如果不存在就繼續循環,循環結束看$b的值,只有在存在的情況下才會得到$b=1,否則$b=0,當$b=0的時候,使用錯誤跳轉函數printerror,'NotCanPostUrl'是一個錯誤常量,在e\data\language\gb\pub\q_message.php中,表示'請從網站提交數據'。

這個函數就是用來判斷前台提交的表單是不是從指定的網站發來的,防止有人修改表單惡意注冊等等之類的。

閱讀全文

與php防止外部提交相關的資料

熱點內容
臉部識別演算法模型廠家 瀏覽:176
反編譯的程序帶注釋嗎 瀏覽:713
安裝軟體伺服器未響應怎麼解決 瀏覽:531
閥門開度單片機 瀏覽:568
python多線程有什麼坑 瀏覽:681
程序員從互聯網跳槽到銀行里 瀏覽:244
百度網盤資源解壓後暫不支持在線 瀏覽:220
android自動化環境 瀏覽:253
androidrealm加密 瀏覽:513
地圖正在解壓縮是什麼意思 瀏覽:217
電腦軟體能放在文件夾嗎 瀏覽:786
uc伺服器怎麼打開 瀏覽:363
net怎麼編譯 瀏覽:244
我的世界187伺服器地址ip 瀏覽:955
拍賣房價的演算法 瀏覽:440
linux內核編譯視頻教程 瀏覽:883
程序員厚黑 瀏覽:211
如何在閑魚淘二手安卓機 瀏覽:178
怎麼下載晨星app 瀏覽:135
兩台伺服器如何同步內容 瀏覽:811