In Laravel 4 _Illuminate\Database\Query
_ Builder
クラスのdelete
関数はnull
をid
パラメーターとして受け入れます。そして、この機能の振る舞いは、私が次のようなものを持っていることを意味します:
_DB::table('users')->where('id', $id)->delete();
_
_$id
_がnull
として渡される場合、テーブル全体が切り捨てられます。つまり、標準の検証に加えて、すべての削除ステートメントを! is_null($id)
検証でラップする必要があります。それはセキュリティ違反ですか、それとも標準的なプラクティスと見なされていますか?
そのパラメーターの目的が何かを誤解していると思います。示した例では、単にショートカットです。ユーザーIDがある場合は、そのwhere
句を記述せずにそれらを削除できます。
DB::table('users')->delete($id);
上記はこれと同じです:
DB::table('users')->where('id', $id)->delete();
有効なIDが提供されていることを確認するために、これらの方法のいずれかを使用する前に、明らかにチェックを実行します。これはセキュリティ違反だとは言いません。アプリケーションを開発する際に開発者として知っておく必要のあることです。最初に入力を検証せずに物事を削除するだけではありません。