web-dev-qa-db-ja.com

Laravel Query Builderの削除

In Laravel 4 _Illuminate\Database\Query_ Builderクラスのdelete関数はnullidパラメーターとして受け入れます。そして、この機能の振る舞いは、私が次のようなものを持っていることを意味します:

_DB::table('users')->where('id', $id)->delete();
_

_$id_がnullとして渡される場合、テーブル全体が切り捨てられます。つまり、標準の検証に加えて、すべての削除ステートメントを! is_null($id)検証でラップする必要があります。それはセキュリティ違反ですか、それとも標準的なプラクティスと見なされていますか?

16
castt

そのパラメーターの目的が何かを誤解していると思います。示した例では、単にショートカットです。ユーザーIDがある場合は、そのwhere句を記述せずにそれらを削除できます。

DB::table('users')->delete($id);

上記はこれと同じです:

DB::table('users')->where('id', $id)->delete();

有効なIDが提供されていることを確認するために、これらの方法のいずれかを使用する前に、明らかにチェックを実行します。これはセキュリティ違反だとは言いません。アプリケーションを開発する際に開発者として知っておく必要のあることです。最初に入力を検証せずに物事を削除するだけではありません。

36
Jason Lewis