PHPスクリプト内のこのMySQLステートメントはどれくらい安全ですか?

StackOverflow https://stackoverflow.com/questions/1201247

質問

このMySQLステートメントはPHPでどの程度安全ですか? SQLインジェクションに対して脆弱ですか?

$sql = sprintf("INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())", 
                 mysql_escape_string(

このMySQLステートメントはPHPでどの程度安全ですか? SQLインジェクションに対して脆弱ですか?

<*>SESSION['client']['id']), mysql_escape_string(

このMySQLステートメントはPHPでどの程度安全ですか? SQLインジェクションに対して脆弱ですか?

<*>POST['id']));
役に立ちましたか?

解決

はい、%dは文字列をエスケープする必要がない数値のみになるため。単一引用符を使用すると、速度も向上します。したがって、安全で高速な方法は次のとおりです。

$sql = sprintf('INSERT IGNORE INTO my_table VALUES(%d, %d, 1, NOW())', 

はい、%dは文字列をエスケープする必要がない数値のみになるため。単一引用符を使用すると、速度も向上します。したがって、安全で高速な方法は次のとおりです。

<*>SESSION['client']['id'],

はい、%dは文字列をエスケープする必要がない数値のみになるため。単一引用符を使用すると、速度も向上します。したがって、安全で高速な方法は次のとおりです。

<*>POST['id']);

他のヒント

いいえ、脆弱ではないはずです。

PHP SQL クエリを保護する方法に関する詳細な記事を次に示します。

http://www.tech- evangelist.com/2007/11/05/preventing-sql-injection-attack/

それは私には問題ありません。

実際には、sprintf(&quot;%d&quot;)は結果として数字のみになるため、この場合はmysql_escape_stringを使用する必要がありますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top