簡體   English   中英

如何保護我的laravel應用不受跨站腳本攻擊?

[英]How to secure my laravel app from Cross-Site Scripting?

我讀了一篇有關跨站點腳本的文章,我想知道我的應用是否容易受到此類操作的影響。

我的應用程序中有一些模塊需要詳細說明。 所以我使用summernote編輯器。為了正確顯示文本,我必須使用{!! !!}。在我的視圖中使用它們顯示未轉義的數據有危險嗎?

我的應用程序中有一些模塊需要詳細說明。 所以我使用summernote編輯器。為了正確顯示文本,我必須使用{!! !!}。在我的視圖中使用它們顯示未轉義的數據有危險嗎?

是的。 永遠不要信任用戶。 永遠不要依賴客戶端轉義。 您需要在服務器端對此進行轉義。

我正在使用Laravel Purifier ,您可以使用它來轉義所有html標簽,或者可以定義允許哪些標簽(例如,在文本字段上應允許使用<h1><strong>類的東西,但是您需要刪除所有<script>標簽。

Laravel開箱即用地包含csrf令牌管理,因此您可以省去跨站攻擊。

編輯

正如TE在評論中所問的那樣,這就是您使用Purifier的方式:

安裝后,您可以在配置中定義轉義的多個配置(例如,如果您有不同的文本區域,則其中一個要允許<h1> ,而另一個則不允許)。 HTML.Allowed =>編寫所有允許使用的標簽,在CSS.AllowedProperties =>設置允許的樣式更改(例如color )。

要比輸入轉義,只需使用clean($input, 'Configurationname'); ,其中ConfigurationnameConfigurationname的名稱。 默認值為default

在視圖中顯示未轉義的數據是危險的,尤其是來自用戶輸入的數據。 例如,用戶可以通過將在此頁面上運行的表單保存JS腳本。

如果您無法使用{{}}來防止XSS攻擊,則可以在將輸入數據存儲到數據庫之前對其進行過濾。 例如,使用regexp可以刪除<script>標記,或者可以先使用not_regex:pattern驗證請求輸入。

不使用 {!! !!},除非您非常確定所顯示的內容是完全安全的。 請改用{{}}。 還要確保您使用的是laravel的csrf令牌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM