11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravelのbladeで脆弱性を考慮した改行とスペース表示

Last updated at Posted at 2020-02-06

https://twitter.com/mpyw/status/1224923891924996099
@mpywさんから学んだことをメモします。

結論

image.png

>ヒューマンエラーでXSS脆弱性に結びつくため
・改行したいときはCSSでpre-wrapを当てる
・HTMLを生で出したいときは HTMLString クラスを使う
・基本的には {!! !!} は使用禁止
・メールテンプレート以外では使わない
・HTMLStringを作る場合は、属性値とかテキストとかはかならずe関数でエスケープ
例:PHPでネストした連想配列を の配列に組み立てる

ちなみに

{!! nl2br(e($hoge)) !!}

上記の書き方でもエスケープ処理はされますが、改行しか反映されません。
改行とスペースも反映させたい場合は、下記のようにCSSでpre-wrapあてます。

<div style="white-space:pre-wrap;">{{$message}}</div>

【注意】

<div>
  foo
</div>

ではなく


<div>foo</div>

のように詰めるように!

参考文献

この記事は以下の情報を参考にしました。

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?