[解決済み】なぜSQL句でWHERE 1=1 AND <conditions>を使用するのでしょうか?
2022-04-17 12:24:55
質問
なぜ
WHERE 1=1 AND <conditions>
SQL句(文字列を連結して得られるSQL、ビュー定義のどちらか)の中で
SQLインジェクション対策に使うというのをどこかで見たことがあるのですが、とても変な感じがします。
インジェクションがある場合
WHERE 1 = 1 AND injected OR 1=1
と同じ結果になります。
injected OR 1=1
.
後日談:ビュー定義での使用はどうでしょうか?
ご回答ありがとうございました。
まだです。 なぜこの構文をビューの定義に使ったり、ストアドプロシージャの中で使ったりするのか、理解できません。
たとえば、こんな感じです。
CREATE VIEW vTest AS
SELECT FROM Table WHERE 1=1 AND table.Field=Value
解決方法は?
条件のリストがコンパイル時にわからず、代わりに実行時に構築される場合、条件が一つか複数かを気にする必要はない。このようにすべて生成することができます。
and <condition>
を作成し、それらをすべて連結します。このとき
1=1
を開始すると、最初の
and
には、関連付けるものがあります。
おっしゃるとおりあまり役に立たなさそうなので、インジェクション対策に使われているのを見たことがありません。I
ある
実装の利便性を高めるために使用されているのを見たことがあります。SQLクエリエンジンは、最終的に
1=1
ので、パフォーマンスへの影響はないはずです。
関連
-
[解決済み】ストアドプロシージャーのエラー ORA-06550
-
[解決済み] バックエンドバージョンでは、データベースのダイアグラムやテーブルのデザインはサポートされていません。
-
[解決済み] エラー: 名前解析スクリプトで正しい関数に渡された長さのパラメーターが無効です。
-
[解決済み] Oracle(LiveSQL)のSQL [重複]について
-
[解決済み] varchar 値の変換で int カラムがオーバーフローしました。
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「パラメータ@objnameがあいまいか、主張する@objtype(COLUMN)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み] 3を挿入すると「ORA-01438: この列で許容される指定精度より大きい値」と表示される。
-
[解決済み】BULK INSERTで「予期せぬファイルの終了」エラーが発生したROWを特定する?
-
[解決済み】一括読み込みデータ変換エラー(指定されたコードページに対して型の不一致または無効な文字)1行目4列目(年)について)
-
[解決済み】SQL Server サブクエリが1つ以上の値を返しました。サブクエリが =, !=, <, <= , >, >= に続く場合、これは許可されません。
-
[解決済み] Presto の JSON_EXTRACT で ' ' 文字を含むキーに問題がある。
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しません。
-
[解決済み] SQLで複数のGROUP BYを使用する場合とは?
-
[解決済み] SQL文にWHERE 1=1を使用する目的は何ですか?[重複しています]。
-
[解決済み】「where 1=1」文【重複あり