9

execute($input_parameter)のようにSQLインジェクションから保護しbindParam/bindValueますか?

答えが「はい」の場合、bindParam()/bindValue()/execute()SQLインジェクション攻撃に対して無防備ですか?または、そのような攻撃を防ぐための対策を講じる必要がありますか?

手伝ってくれてありがとう!。

4

2 に答える 2

2

execute($input_parameters)個別のステップと同じくらい安全である限りbindParam/bindValue/execute、答えは基本的にイエスのようです.

ただし、呼び出しに渡すクエリ文字列の作成方法によっては、さらに対策が必要になる場合がありますPDO::prepare。準備されたクエリ文字列のすべてをパラメータ化できるとは限りません。たとえば、テーブルまたは列の名前にパラメーターを使用することはできません。ユーザー データまたは外部データをそのクエリ文字列に許可する場合でも、文字列を に渡す前にそのデータをサニタイズする必要がありますprepare。詳細については、次の stackoverflow の質問を参照してください。

一般に、とにかくすべての入力データをフィルタリングする必要があるため、さらに安全にしたい場合は、必要に応じて適切なフィルターを使用して SQL タイプのものを対象とする入力データをサニタイズするか、FILTER_CALLBACK カスタム関数を作成することもできます。願い。ユーザー提供のデータに由来するテーブルまたは列の名前の場合、一般的な検証手法は、許容される名前の配列に対して値をチェックすることです。

お役に立てれば。幸運を。おげんきで!;)

于 2012-09-13T08:24:57.777 に答える
0

はい、同じことをします。基盤となる SQL エンジン自体が脆弱である可能性があるため、脆弱性がないとは言えません。しかし、それはもうあなたの手の中にありません。

したがって、すべての実用的な理由から、はい、安全です。

編集: PHP ドキュメント(1 番目と 2 番目の例) を参照してください。1 つは withbindParam()で、もう 1 つは を使用しexecute()ます。

于 2012-09-12T06:10:04.893 に答える