#背景
Laravelで複数条件を扱いたい旨をGoogle先生に尋ねると
whereRawを利用するよう解説するサイトを紹介される。
しかし、whereRawを利用すると直にSQL文を触るため、SQLインジェクションに利用される。
解説サイトも解説するだけしておいて、SQLインジェクションについては一切触れていないし
脆弱性だらだらのコードを掲載している。
既出だろうが、whereRawの拡散を防ぐために目を通していただきたい
例
whereraw.php
$user = Input::get("user");
$password = Input::get("password");//ハッシュ化するものとするが例なので省略
User::whereRaw("user = '" . $username . "AND password = '".$password."'");
whereRaw
これは、クエリビルダーで作成することができないSQL文を発行するときに利用する。
めったに使わないはずの関数。
#whereは何度でも使える
where.php
$user = Input::get("user");
$password = Input::get("password");//ハッシュ化するものとするが例なので省略
User::where("user","=",$user)->where("password","=",$password);
このように書くことができる。
whereの第3引数はエスケープされる(はず)なので、インジェクション対策を行うことができる。
Typoや勘違いがありましたら教えてください