輸入安全
雖然5.0的底層安全防護比之前版本要強大不少,但永遠不要相信使用者提交的資料,建議務必遵守下面規則:
設定 public 目錄為唯一對外訪問目錄,不要把資源檔案放入應用目錄;
開啟表單令牌驗證避免資料的重複提交,能起到 csrf 防禦作用;
使用框架提供的請求變數獲取方法(request類 param 方法及 input 助手函式)而不
是原生系統變數獲取使用者輸入資料;
對不同的應用需求設定 default_filter 過濾規則(預設沒有任何過濾規則),常見
的安全過濾函式包括 stripslashes 、 htmlentities 、 htmlspecialchars 和strip_tags 等,請根據業務場景選擇最合適的過濾方法;
使用驗證類或者驗證方法對業務資料設定必要的驗證規則;
如果可能開啟強制路由或者設定miss路由規則,嚴格規範每個url請求;
資料庫安全
在確保使用者請求的資料安全之後,資料庫的安全隱患就已經很少了,因為 5.0 版本的資料操作使用了pdo預處理機制及自動引數繫結功能,請確保:
盡量少使用陣列查詢條件而應該使用查詢表示式替代;
盡量少使用字串查詢條件,如果不得已的情況下 使用手動引數繫結功能;
不要讓使用者輸入決定要查詢或者寫入的字段;
對於敏感資料在輸出的時候使用 hidden 方法進行隱藏;
對於資料的寫入操作應當做好許可權檢查工作;
寫入資料嚴格使用 field 方法限制寫入字段;
對於需要輸出到頁面的資料做好必要的 xss 過濾;
上傳安全
**的上傳功能也是乙個非常容易被攻擊的入口,所以對上傳功能的安全檢查是尤其必要的。
系統的 think\file 提供了檔案上傳的安全支援,包括對檔案字尾、檔案型別、檔案大小
以及上傳檔案的合法性檢查,確保你已經在上傳操作中啟用了這些合法性檢查。
為了方便版本公升級,並且保證public目錄為唯一的web可訪問目錄,資源檔案可以放到專案之外,例如專案目錄為
/home/www/thinkphp/
那麼資源目錄、上傳檔案儲存的目錄
/home/www/resource/
/home/www/resource/upload/
為了專案的可維護性,目錄操作最好不超出本專案的根目錄,所以需要把resource目錄對映到根目錄
ln -s /home/www/resource/ /home/www/thinkphp/resource/
如果上傳檔案也需要web訪問,可以生成乙個軟連線到public
ln -s /home/www/thinkphp/resource/upload/ /home/www/thinkphp/public/uplo
ad/其它安全建議
其它的一些安全建議:
對所有公共的操作方法做必要的安全檢查,防止使用者通過url直接呼叫;
不要快取需要使用者認證的頁面;
對使用者的上傳檔案,做必要的安全檢查,例如上傳路徑和非法格式;
對於專案進行充分的測試,不要生成業務邏輯的安全隱患(這可能是最大的安全問
題);最後一點,做好伺服器的安全防護,安全問題的關鍵其實是你的最薄弱的環節;
ROS學習心得 安裝篇 ROS安裝
ros學習心得 安裝篇 ros安裝 for the sigma for the gtinder for the robomaster ros robot operating system 是乙個機械人軟體平台,它能為異質計算機集群提供類似作業系統的功能。很多機械人開發都圍繞這這一平台。關於kinet...
轉 ROS學習心得 安裝篇 ROS安裝
ros學習心得 安裝篇 ros安裝 for the sigma for the gtinder for the robomaster ros robot operating system 是乙個機械人軟體平台,它能為異質計算機集群提供類似作業系統的功能。很多機械人開發都圍繞這這一平台。關於kinet...
第八周學習
第八周學習週報 2018.10.22 10.28 一 本週學習情況 本週主要學習了 開源硬體 arduino基礎教程 1 歐姆定律 2 光敏電阻與三極體的初步認識 3 多種方法控制並點亮led燈 按鈕開關,光敏開關,紅外開關 訪問了csdn社群的計算機基礎板塊,學習大神的帖子。利用開源硬體對網課裡的...