[英]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');
,其中Configurationname
是Configurationname
的名稱。 默認值為default
。
在視圖中顯示未轉義的數據是危險的,尤其是來自用戶輸入的數據。 例如,用戶可以通過將在此頁面上運行的表單保存JS腳本。
如果您無法使用{{}}來防止XSS攻擊,則可以在將輸入數據存儲到數據庫之前對其進行過濾。 例如,使用regexp可以刪除<script>
標記,或者可以先使用not_regex:pattern
驗證請求輸入。
不使用 {!! !!},除非您非常確定所顯示的內容是完全安全的。 請改用{{}}。 還要確保您使用的是laravel的csrf令牌。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.