PHP私はユーザーのIPアドレス(_$_SERVER['REMOTE_ADDR']
_)を取得して一部のMySQLクエリで使用します)を行いますnot真のIPアドレスであることを検証します。
MySQLクエリで使用する前にユーザーIPアドレスを検証する必要がありますか、または_$_SERVER['REMOTE_ADDR']
_を使用する場合は常に有効なIPアドレスになりますか? SQLインジェクションを防止しようとしています。
検証する必要がある場合、どのPHP関数を使用することをお勧めしますか?mysqli_real_escape_string()
などを使用してIPアドレスを送信する必要がありますか?
このページ から、$ _ SERVER配列のREMOTE_ADDR要素は、クライアントによって渡されるのではなく、サーバーによって入力されるように見えるので、(バグがない限り)妥当な仮定である必要がありますリモートクライアント(またはリモートクライアントの代わりに動作するプロキシサーバー)のIPアドレス。
@ Lucb1eが以下にコメントしているように、$ _ SERVER配列の一部の要素はクライアントからのものであり、信頼性は低いはずです
@OleksiがSQLクエリへの入力を信頼しないことを言及しているように、一般的に良い考えです。
REMOTE_ADDRは、受信側のTCP=スタックによって決定されます-クライアントから「送信」されたデータではありません。IPv4もipv6も、SQLで安全でない/区切り式の文字を使用しません。
ただし、IPアドレス(つまり、xxx.xxx.xxx.xxxまたはxxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)を保存する意味がほとんどないため、数値の方がはるかに有用であり、必要なストレージも少なくなります。 inet_aton()およびinet6_aton()関数のマニュアル。