【PHP/Laravel】Laravelのエスケープ処理は簡単

laravel

blade.php

laravelのエスケープ処理は非常に簡単。二重波括弧で囲んでやるだけ。

<p>{{ $data }}</p>

逆に、エスケープしたくない場合には、!!をつけてやる。

<p>{{!! $data !!}}</p>

エスケープ処理する理由

エスケープ処理とは、文字列として認識させること。コードの中で使う記号などを文字列として扱う。なぜエスケープ処理するかというとXSS攻撃を防ぐため。

You should typically use the escaped, double curly brace syntax to prevent XSS attacks when displaying user supplied data.

Displaying Unescaped Data

XSS攻撃とは悪意のある不正なスクリプトを実行させるもの。例えば、入力フォームにJSのコードをそのまま入力する。掲示板などで一覧データを表示させる際に、エスケープ処理していないと先程入力したコードが実行されて不正な動きをする場合がある。これを意図的に悪意でやるのがXSS攻撃。

htmlspecialchars

phpには、特殊文字を HTML エンティティに変換するhtmlspecialchars()が用意されてる。変換対象となる記号は、&アンパサンド、"ダブルクォート、’シングルクォート、<>。第二引数にフラグを取り、ENT_QUOTESはシングル、ダブルクォートともに変換する。フレームワークを使わない場合、サーバー側でエスケープ処理をしてやる必要があるが、Laravelだと単に括弧で囲んでやるだけなので簡単。

以上

参照

HTML Entity Encoding
htmlspecialchars

Laravel, php, programming

Posted by himajinn