LoginSignup
13
13

More than 5 years have passed since last update.

XSS対策をしつつも改行のみを許可する

Posted at

ゴール

PHPでおそらくセキュアに文字列を出力させつつ、改行のみ許可する。
Laravel以外のフレームワーク詳しくないが、フレームワーク問わず使えるはず。

説明

前提条件 : 下記の場合、DBに文字列を保存するときに改行コードを全て<br>にしとく。

view内
echo str_replace('&lt;br&gt;', '<br>', htmlspecialchars( $string ,ENT_QUOTES) ); 

仕組みは単純で、htmlspecialcharsで$stringに入っている特殊文字をHTMLエンティティに変換する。そうすると<script>タグなどが全てエスケープされる。
しかし、それだとセキュアになる反面、改行をするための<br>タグが効かなくなる。そのため、str_replace関数を使って&lt;br&gt;を<br>タグに置換して、改行のみを許可する。

まとめ

Laravel使って実装していたが、良いヘルパー見つけられずに結局普通のPHPのコードになってしまった。とはいえ、生のPHPだからViewで使えばCakePHPだろうとCodeigniterだろうと使えるはずですよね。( 使えなかったらすみません...。 )

13
13
4

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
13
13