設問
Universal Containerは、ユーザ入力を受け入れ、結果をユーザに返すことを優先するカスタムVisualforceページを開発しました。ユーザーがSOQLインジェクション攻撃を実行できないようにするには、どの2つの手法を使用する必要がありますか?
選択肢
A. ユーザー入力内の二重引用符をエスケープします。
B. SOQL クエリでバインド変数を使用します。
C. ユーザー入力をサニタイズするには、escapesinglequotes() メソッドを使用します。
D. コントローラで with Sharing キーワードを使用します。
解答
B. SOQL クエリでバインド変数を使用します。
C. ユーザー入力をサニタイズするには、escapesinglequotes() メソッドを使用します。
解説
A. ユーザー入力内の二重引用符をエスケープします。
不正解です。二重引用符のエスケープは、JavaScriptやHTMLコンテキストでのセキュリティ対策として有効ですが、SOQLインジェクション防止策としては十分ではありません。
B. SOQL クエリでバインド変数を使用します。
正解です。バインド変数を使用すると、ユーザー入力が直接SOQLクエリに挿入されるのを防ぎ、Salesforceが自動的に値を安全に処理するため、インジェクション攻撃を防止できます。
C. escapesinglequotes() メソッドを使用します。
正解です。escapesinglequotes()
メソッドは、ユーザー入力に含まれるシングルクオート(’)をエスケープし、SQL文内で悪用されるリスクを低減します。これにより、入力値が安全に処理されます。
D. コントローラで with Sharing キーワードを使用します。
不正解です。with Sharing
キーワードは、データの共有ルールを強制するために使用されますが、SOQLインジェクション攻撃に直接的な防止効果はありません。
第4問
こちらをクリック