問題タブ [parameter-spoofing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - SQL Serverでのパラメータスニッフィング(またはなりすまし)
しばらく前に、ユーザーの1人に対してかなり多く実行したクエリがありました。それはまだ進化して微調整されていましたが、最終的には安定して実行されたので、そこからストアドプロシージャを作成しました。
これまでのところ、とても正常です。
ただし、ストアドプロシージャは非常に低速でした。クエリとプロシージャの間に重要な違いはありませんが、速度の変化は大幅でした。
[背景、SQLServer2005を実行しています。]
フレンドリーなローカルDBA(ここではもう機能していません)は、ストアドプロシージャを一目見て、「パラメータのなりすまし!」と言いました。(編集:「パラメータスニッフィング」としても知られているようですが、検索しようとしたときのGoogleヒットの不足を説明している可能性があります。)
ストアドプロシージャの一部を2番目のプロシージャに抽象化し、この新しい内部プロシージャの呼び出しを、外部プロシージャと呼ばれる既存の外部プロシージャにラップしました。これは、元のクエリと同じくらい高速でした。
それで、何が得られますか?誰かがパラメータのなりすましを説明できますか?
のボーナスクレジット
- それを回避する方法を強調する
- 考えられる原因を認識する方法を提案する
- 状況を緩和するための代替戦略、たとえば統計、インデックス、キーについて話し合う
java - selectOne と selectMany の選択肢は SelectItems によって制限されていますか?
JSF selectOne および selectMany コントロールは、指定された selectItems で定義された値の送信のみを許可しますか? パラメーターのなりすましが心配です。これが組み込まれている場合、選択した値が有効な選択肢の 1 つであることを確認するバリデーターは必要ありません。