色综合天天_bl高肉强受失禁尿出来v文_日处女视频_在线观看国产剧情麻豆精品

十三年專注于網站建設與互聯網應用開發,低調、有情懷的網絡應用服務商!
南昌百恒科技微信公眾號 掃一掃關注
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒科技微信公眾號

ThinkPHP的安全注意事項有哪些?

百恒 2023-02-20 16:27:59 685
? ? ? ?ThinkPHP是一個快速、兼容而且簡單的輕量級PHP開發框架,是為企業級應用開發和WEB應用開發而誕生的,規范的使用框架,能讓我們盡量的避免一些看起來比較幼稚的安全問題,下面南昌APP開發公司百恒科技小編來跟大家聊一下ThinkPHP的安全注意事項有哪些。


ThinkPHP的安全注意事項


? ? ? ?ThinkPHP在考慮開發體驗的同時,仍然十分重視框架的底層安全,雖然屢有安全漏洞被播報,但官方都是及時進行修復處理,而且大部分漏洞只要開發者有一定的安全意識都是可以避免的,今年也和國內的幾個安全團隊建立了合作關系,有助于提前發現和及時修正框架可能被利用的漏洞或者隱患。

? ? ? ?1、規范部署

? ? ? ?這一點很多開發者不是特別重視,安全是一個整體性的問題,任何一個環節出問題,帶來的后果都是一樣的嚴重,部署的安全策略是一個基礎安全問題。

? ? ? ?很多開發者往往不按照官方的部署規范進行部署,請務必把你的WEB根目錄指向public目錄而不是應用根目錄,并且不要隨意更改入口文件的位置。public目錄下面不要放除了入口文件和資源文件以外的其它應用文件。

? ? ? ?2、關閉調試模式

? ? ? ?在部署到生產環境的時候,確保你已經關閉了調試模式,可以通過修改環境變量的方式關閉調試模式。

? ? ? ?APP_DEBUG=false?

? ? ? ?無論是本地開發還是生產環境部署,都不建議直接通過修改配置文件的方式開啟/關閉調試模式,而應該使用環境變量(本地開發可以通過定義.env文件)。

? ? ? ?關閉調試模式后,系統的健康狀態和運行監控主要依靠日志或者你使用的監控服務。所以,要養成定時檢查日志和運行狀態的習慣。

? ? ? ?3、請求變量過濾

? ? ? ?永遠不要相信用戶的輸入,這是一句至理名言。盡可能的過濾請求變量能有效防范大部分的漏洞和隱患。

? ? ? ?框架建議的獲取請求變量的方法是Request類的param方法(如非必要不要再使用get或者post方法獲取,更不要使用原生的$_GET/$_POST等方法獲取)。

? ? ? ?public function index(Request $request) { $name = $request->param('name'); // 在這里可以根據你的業務需求進行更嚴謹的過濾 // 例如 $name = $request->param('name','','htmlentities,strtolower'); // 或者使用驗證器進行專門的驗證 }?

? ? ? ?對于有明確類型的請求變量,可以在使用param方法的時候使用類型強制轉換,例如:

? ? ? ?public function index(Request $request) { // 強制轉換字符串數據 $name = $request->param('name/s'); // 強制轉換整型數據 $name = $request->param('id/d'); // 強制轉換浮點型數據 $name = $request->param('score/f'); }?

? ? ? ?或者直接使用方法參數獲取請求變量

? ? ? ?public function index(string $name) { // 在這里可以根據你的業務需求進行更嚴謹的過濾 // 或者使用驗證器進行專門的驗證 }?

? ? ? ?如果你需要對所有數據進行處理,可以設置全局的過濾方法。對不同的應用需求設置default_filter過濾規則(默認沒有任何過濾規則),常見的安全過濾函數包括stripslashes、?htmlentitieshtmlspecialcharsstrip_tags等,請根據業務場景選擇蕞合適的過濾方法。

? ? ? ?如果需要獲取多個數據,建議使用only方法指定需要獲取的變量名稱,避免有些不懷好意的數據提交導致權限問題。

? ? ? ?public function index(Request $request) { // 指定表單數據名稱 $data = $request->only(['name','title']); }?

? ? ? ?當你使用數據庫或者模型操作寫入數據的時候,也可以指定字段,避免非法和不希望的字段寫入數據庫。

? ? ? ?// 模型 User::allowField(['name','title']) ->save($data); // 數據庫 Db::name('user') ->field(['name','title']) ->insert($data);?

? ? ? ?模型還有一個只讀字段的功能能避免你的數據受到外部的修改。

? ? ? ?4、上傳檢測

? ? ? ?網站的上傳功能也是一個非常容易被攻擊的入口,所以對上傳功能的安全檢查是尤其必要的。

? ? ? ?系統的thinkFile類提供了文件上傳的安全支持,包括對文件后綴、文件類型、文件大小以及上傳圖片文件的合法性檢查,確保你已經在上傳操作中啟用了這些合法性檢查,可以參考手冊的上傳章節。

? ? ? ?5、SQL注入

? ? ? ?ThinkPHP的查詢統一使用了PDOprepare預查詢和參數綁定機制,能有效的避免SQL注入的發生。但不代表一定安全,如果你缺乏良好的代碼規范,仍然有可能被利用。

? ? ? ?一個蕞簡單的原則是不要讓用戶決定你的查詢條件(或者字段排序)和控制你的查詢數據。

? ? ? ?對于一些字符串的查詢條件(包括原生查詢)或者特殊的查詢(包括ORDER部分),需要手動進行參數綁定。

? ? ? ?// 錯誤的 Db::query("select * from think_user where id=$id AND status=$statis"); // 正確的 Db::query("select * from think_user where id=? AND status=?", [ $id, $status]); // 正確的 Db::execute("update think_user set name=:name where status=:status", [ 'name' => 'thinkphp', 'status' => 1 ]);?

? ? ? ?對于使用了whereExpwhereRaw方式的查詢,你也需要使用參數綁定。

? ? ? ?Db::name('user') ->whereRaw('id > ? AND status = ?',[10, 1]) ->select();?

? ? ? ?6、使用驗證器

? ? ? ?對于大量的表單需要驗證的情況,建議使用驗證器功能統一進行數據的合規驗證。驗證器的驗證操作應該在控制器或者路由階段使用validate方法進行處理,模型的數據驗證功能新版已經取消不再建議使用,模型和數據庫操作的時候應該傳入經過安全處理過的數據。

? ? ? ?7、XSS攻擊

? ? ? ?跨站腳本攻擊(cross-site scripting,簡稱 XSS),XSS是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。

? ? ? ?在渲染輸出的頁面中,要對一些數據進行安全處理,防止被惡意利用造成XSS攻擊,如果是5.1版本的話,所有的輸出都已經經過了htmlentities 轉義輸出,確保安全。如果是5.0版本的話,你可以自定義一個xss過濾函數,在模板文件中對一些關鍵內容變量進行函數處理。

? ? ? ?CSRF_132" style="box-sizing:inherit;margin:-10px 0px 0px;padding:0px;color:#009A61;position:absolute;">CSRF

? ? ? ?CSRF 跨站請求偽造是 Web 應用中非常常見的安全威脅之一,攻擊者偽造目標用戶的HTTP請求,然后此請求發送到有CSRF漏洞的網站,網站執行此請求后,引發跨站請求偽造攻擊。攻擊者利用隱蔽的HTTP連接,讓目標用戶在不注意的情況下單擊這個鏈接,由于是用戶自己點擊的,而他又是合法用戶擁有合法權限,所以目標用戶能夠在網站內執行特定的HTTP鏈接,從而達到攻擊者的目的。

? ? ? ?開啟表單令牌驗證,盡量開啟強制路由并嚴格規范每個URL請求,定義單獨的MISS路由規則。

? ? ? ?遵循請求類型的使用規范并做好權限驗證,刪除操作必須使用DELETE請求,數據更改操作必須使用POSTPUT 或者 PATCH 請求方法,GET請求不應該更改任何數據。

? ? ? ?8、會話劫持

? ? ? ?會話劫持是指攻擊者利用各種手段來獲取目標用戶的session id。一旦獲取到session id,那么攻擊者可以利用目標用戶的身份來登錄網站,獲取目標用戶的操作權限。

? ? ? ?有效的防護策略包括:

? ? ? ?在每次會話啟動的時候,調用regenerate方法。

? ? ? ?Session::start(); Session::regenerate(true);?

? ? ? ?更改session配置參數,開啟安全選項:

? ? ? ?'use_trans_sid' => 0, 'httponly' => true, 'secure' => true,?

? ? ? ?9、升級到安全版本

? ? ? ?官方會對一些安全隱患和潛在漏洞進行修復,并且發布一個更為安全的版本。請確認你升級到更安全的版本,確保底層的安全和健壯性。

? ? ? ?目前各個版本的建議版本如下:

? ? ? ?大版本? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 安全建議版本
? ? ? ?3.2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.2.4+
? ? ? ?5.0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5.0.21+
? ? ? ?5.1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5.1.25+

? ? ? ?關注官方的公眾號和開發者周刊,注意蕞新的安全更新。

? ? ? ?10、業務邏輯安全

? ? ? ?這個屬于應用層面的安全,很多漏洞源于某個業務邏輯自身的安全隱患,包括沒有做合理的數據驗證和權限檢查,尤其是涉及資金及財務層面的,一定要做更多的安全檢查,并且開啟事務。一個好的建議是更多的對應用進行分層設計,減少每層的復雜性,獨立的分層設計便于提高安全性。

? ? ? ?11、服務器安全

? ? ? ?還有是運維階段需要特別注意的,及時更新服務器的安全補丁,確保沒有可利用的公開系統漏洞,包括你的數據庫系統安(尤其是數據備份工作)。

? ? ? ?以上是南昌APP開發公司百恒科技小編要跟大家聊到的關于ThinkPHP的安全注意事項,希望能夠對大家有所幫助,想要了解更多關于這方的內容歡迎留言咨詢百恒科技,百恒科技專注于南昌APP開發南昌小程序開發南昌網站建設開發等服務!


相關文章推薦? ?:? ? 用FFmpeg對視頻轉碼壓縮的方法? ? ?

? ? ? ? ? ? ? ? ? ? 關于ThinkPHP開發框架遠程代碼執行漏洞的通告? ? ??
400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號

歡迎您的光顧,我們將竭誠為您服務×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
備案專線 備案專線
 
售后服務 售后服務
 
×