mysql_real_escape_string() と mysql_escape_string() はアプリケーションのセキュリティに十分ですか?
これらの関数はデータ保護を強化できますが、十分ではありません。 Web アプリケーションをあらゆるセキュリティから完全に保護しますリスク。
SQL インジェクション
SQL のような「�ta%」などのパラメーターを使用した攻撃
Charset エクスプロイト
LIMIT エクスプロイト
プロアクティブな防御: プリペアド ステートメント
コード例
ここでは、mysql_escape_string() と PHP のプリペアド ステートメントの比較を示します。
// Escaping Method $sql = sprintf("SELECT url FROM GrabbedURLs WHERE %s LIKE '%s%%' LIMIT %s", mysql_real_escape_string($argv[1]), mysql_real_escape_string($argv[2]), mysql_real_escape_string($argv[3])); // Prepared Statement $statement = $pdo->prepare('SELECT url FROM GrabbedURLs ' . 'WHERE ' . $column . '=? ' . 'LIMIT ' . intval($limit)); $statement->execute(array($value));
プリペアド ステートメント、実装には若干時間がかかりますが、悪意のある SQL クエリに対する優れた保護を提供し、コードを削減します。複雑さ。
以上が`mysql_real_escape_string()` と `mysql_escape_string()` は Web アプリケーションを SQL インジェクションから保護するのに十分ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。