Laravel 安全性,七種開發人員常犯的錯誤

更新 發佈閱讀 4 分鐘

待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。

Laravel Security: Top 7 Mistakes Developers Make


XSS攻擊

在Laravel 裡主要通過Blade模板引擎和ORM 來處理用戶的輸入數據,以減少XSS的風險,而正常的情況下,blade接受一個Controller傳遞一個包含HTML到view時,blade會自動替我們轉譯這些東西,確保用戶輸入的內容不會當作原始HTML來呈現。

首先我們先建立一個Controller 並定義一個output 為html的格式

raw-image

當我們使用<p>{{ $userInput }}</p> 來進行轉譯時,可以看到如下畫面


raw-image

而如果想正確使用HTML呈現方式根據文檔說明,我們可以使用{!! $name !!} 來處理,而在這個方式下,就容易會遇到XSS攻擊,要格外小心。

raw-image

最後結果就會長成這個樣子

raw-image
raw-image

而當我們使用{!! $userInput !!}這個方式呈現,那當你取得資料未做處理時,而傳送一個script那就容易遇到XSS攻擊,例如下列程式碼,應該避免這樣子的寫法。

raw-image
raw-image

如果將{!! $userInput !!}改為{{ $userInput }},會長成什麼樣子呢?結果如下:最呈現為純文本的方式,而不是執行其中的script

raw-image

避免直接使用$request->all()

在 Laravel 中,request->all() 用於取得請求中的所有輸入數據,包括查詢字串、表單資料、檔案等。 雖然在某些情況下這樣的用法是方便的,但有一些潛在的安全風險,特別是在處理使用者提交的資料時,如果使用者提交了不受信任的數據,可能會引入安全漏洞,如 SQL 注入、XSS 攻擊等。

應使用驗證器來驗證和過濾使用者輸入或僅取得所需的字段,例如...

$request->validated();
$request->only();
$request->except();


File Uploads: Client Data

根據影片講到,如果取得上傳的檔案時,避免使用getClientOriginalNamegetClientOriginalExtension方法,因為這是被認為是不安全的,因為檔案名稱和副檔名可能會被惡意使用者篡改。

raw-image

文檔建議改用hashName() extension() 來取得給定檔案上傳的名稱和副檔名


$file = $request->file('avatar'); 
$name = $file->hashName(); // Generate a unique, random name...
$extension = $file->extension(); // Determine the file's extension based on the file's MIME type...


避免使用GET method 來更新你的資料

在Laravel 中預設啟用 CSRF 保護,並在每個表單中產生 CSRF 令牌。 這個令牌用於驗證表單提交的請求是否合法。 你可以在 Blade 模板中使用 @CSRF指令產生 CSRF 令牌,而根據文檔說明如下,這些方法裡面並不包含GET,故應避免使用GET method 來更新你的資料

Anytime you define a "POST", "PUT", "PATCH", or "DELETE" HTML form in your application, you should include a hidden CSRF _token field in the form so that the CSRF protection middleware can validate the request.


而影片另外介紹一個Laravel Rate Limiting這個功能,是可以用於防止惡意使用者或自動化腳本濫用某些資源或服務,避免被DDOS攻擊

Rate Limiting應該會再花另一篇介紹這個好用的東C,以上筆記是我自己認為比較容易忘記的部分進行整理,內容還有講解到.env的暴露跟debug在正式環境應該要關起來,這應該是要熟記到不行了,就沒在整理出來~一起進步~


留言
avatar-img
DDDDD的沙龍
15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
DDDDD的沙龍的其他內容
2023/12/09
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
2023/12/09
現在AI工具太多,且框架對於資安支援及處理也越來越方便,反而開始會容易忽略最底層的知識,這邊回顧MySQL的鎖,順便記錄一下找到的一些影片資源,並整理筆記
Thumbnail
2023/12/05
這邊主要是遇到功能需要處理時區,雖然主管給的筆記已經寫得很完美了,但覺得還是得理解吸收後並記錄自己的筆記後,好像才能有效吸收到腦袋裡
Thumbnail
2023/12/05
這邊主要是遇到功能需要處理時區,雖然主管給的筆記已經寫得很完美了,但覺得還是得理解吸收後並記錄自己的筆記後,好像才能有效吸收到腦袋裡
Thumbnail
2023/11/05
研究這個部分起因是因為公司某些功能服務是使用AWS Serverless來處理計算,故而外訂立了三個月學習NodeJS的計畫,並開始試著實作Serverless服務,Jest測試還沒研究到,下次再補充說明。
Thumbnail
2023/11/05
研究這個部分起因是因為公司某些功能服務是使用AWS Serverless來處理計算,故而外訂立了三個月學習NodeJS的計畫,並開始試著實作Serverless服務,Jest測試還沒研究到,下次再補充說明。
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。
Thumbnail
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。
Thumbnail
本篇介紹了一個名為 DOMPurify 的套件,它可以增加網站對 XSS 攻擊的防護力。DOMPurify 可以幫助開發人員過濾和清除不受信任的輸入,以防止 XSS 攻擊。本文提供了 DOMPurify 的安裝和使用方法,並提供了一個範例 Demo 供參考。
Thumbnail
本篇介紹了一個名為 DOMPurify 的套件,它可以增加網站對 XSS 攻擊的防護力。DOMPurify 可以幫助開發人員過濾和清除不受信任的輸入,以防止 XSS 攻擊。本文提供了 DOMPurify 的安裝和使用方法,並提供了一個範例 Demo 供參考。
Thumbnail
跨站腳本攻擊(XSS)是Web應用中最常見的安全威脅之一。它允許攻擊者在受害者的瀏覽器中執行惡意腳本,進而竊取數據、欺騙用戶或進行其他惡意操作。在這篇文章中,我們將探討如何在Gin中預防XSS攻擊,保護你的應用和用戶。
Thumbnail
跨站腳本攻擊(XSS)是Web應用中最常見的安全威脅之一。它允許攻擊者在受害者的瀏覽器中執行惡意腳本,進而竊取數據、欺騙用戶或進行其他惡意操作。在這篇文章中,我們將探討如何在Gin中預防XSS攻擊,保護你的應用和用戶。
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 攻擊的類型有哪些? 可能造成的危害 資源參考
Thumbnail
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。 攻擊的類型有哪些? 可能造成的危害 資源參考
Thumbnail
假如你開發了一個網站,有user登入的功能,駭客故意輸入SQL語法來破壞原本的SQL結構,這就是SQL注入攻擊。
Thumbnail
假如你開發了一個網站,有user登入的功能,駭客故意輸入SQL語法來破壞原本的SQL結構,這就是SQL注入攻擊。
Thumbnail
本篇會從個人用戶的角度,為各位介紹十種方法,讓大家能夠最大限度的保護自己,避免成為駭侵受害者。 由於文章過長,所以分成上下兩篇...
Thumbnail
本篇會從個人用戶的角度,為各位介紹十種方法,讓大家能夠最大限度的保護自己,避免成為駭侵受害者。 由於文章過長,所以分成上下兩篇...
Thumbnail
1. 設定cookie為HttpOnly 在一般的情況下,cookie是可以透過javascript來存取的(document.cookie),如同上一篇所說的,有可能會有XSS攻擊的風險。 將cookie設定為HttpOnly,表示這個cookie無法透過js存取。
Thumbnail
1. 設定cookie為HttpOnly 在一般的情況下,cookie是可以透過javascript來存取的(document.cookie),如同上一篇所說的,有可能會有XSS攻擊的風險。 將cookie設定為HttpOnly,表示這個cookie無法透過js存取。
Thumbnail
Cross-Site Scripting簡稱XSS,它指的是駭客在網頁裡插入惡意程式碼,當其他user瀏覽該網頁時,惡意網頁程式碼就會被執行。
Thumbnail
Cross-Site Scripting簡稱XSS,它指的是駭客在網頁裡插入惡意程式碼,當其他user瀏覽該網頁時,惡意網頁程式碼就會被執行。
Thumbnail
最近談起資安相關的話題時,發現其他人有些觀念可能有待澄清。筆者因為過去的經歷,在這方面也算是有點心得;所以這裡就來探討幾點大家可能比較有興趣、但觀念上可能跟一般研發經驗不一樣的地方。
Thumbnail
最近談起資安相關的話題時,發現其他人有些觀念可能有待澄清。筆者因為過去的經歷,在這方面也算是有點心得;所以這裡就來探討幾點大家可能比較有興趣、但觀念上可能跟一般研發經驗不一樣的地方。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News