IT-Q

Laravel が標準で守ってくれるものと、自分で書く必要があるものの区別として正しいのはどれですか。

自動で守られるのは Query Builder 経由の SQL インジェクション、Blade のエスケープ、web グループでの CSRF です。生SQLや生出力に落ちた瞬間、そこは自分の責任になります。

面接官が見ているのはフレームワーク任せの範囲を把握しているか。

よくある答えと、面談でどう見られるか

  • SQLi・XSS・CSRF は標準で守られるが、認可(誰がどのデータを見てよいか)は自前
    その通りです。ただし生SQLを書けば SQLi は自分の責任になり、{!! !!} を使えば XSS も素通りします。
  • フレームワークが全部守ってくれるので、意識する必要はない
    認可は完全に自前です。ここが最も抜けやすい箇所です。
  • 何も守ってくれないので、すべて自分で実装する
    標準で守られる範囲を知らないと、車輪の再発明か二重実装になります。
  • CSRF はどのルートでも自動的に守られる
    web ミドルウェアグループのルートだけです。api では適用されません。

面接官は何を見ているか

  • 自動で守られるもの(SQLi / XSS / CSRF)を挙げた
  • 自分で書くもの(認可 / 権限 / 業務ロジック)を挙げた
  • 自動が効かなくなる条件に触れた

模範解答

自動で守られるのは、Query Builder 経由のSQLインジェクション、Blade の {{ }} によるXSS、web ミドルウェアグループでのCSRFです。ただし、生SQLを書けばSQLiは自分の責任になりますし、{!! !!} を使えばXSSも素通りします。認可——「このユーザーはこのデータを見ていいか」——は完全に自前です。ここが一番抜けやすいところだと思います。

ここからどう深掘りされるか

この問いに答えられた場合、面談は次の質問に進みます。