ホームページ >バックエンド開発 >PHPチュートリアル >mysql_real_escape_string() は本当に安全ですか?文字エンコーディングの欠陥への対処。
質問への対処: mysql_real_escape_string() は安全ですか?
mysql_real_escape_string() には脆弱性があると言われているにもかかわらず、依然として広く使用されている関数です。 SQL インジェクション攻撃を防止します。ただし、その有効性を確保するには、提起された特定の欠陥に対処する必要があります。
文字エンコーディングの欠陥
mysql_real_escape_string() に関する懸念の 1 つは、その潜在的な問題です。文字エンコーディングの処理が正しくありません。具体的には、SET NAMES または SET CHARACTER SET ステートメントを使用して文字セットを変更する場合、mysql_real_escape_string() で使用されるエンコーディングには影響しません。この不一致により、予期しない動作が発生する可能性があります。
解決策: mysql_set_charset() の使用
この問題を解決するには、MySQL では、SET NAMES または SET の代わりに mysql_set_charset() を使用することをお勧めします。 CHARACTER SET を使用してエンコーディングを変更します。 mysql_set_charset() はエンコーディングを変更するだけでなく、mysql_real_escape_string() のエンコーディングと調整します。
コード例:
// In PHP: mysql_set_charset('utf8',$connection); // Replace 'utf8' with your desired charset
このアプローチに従うことで、 mysql_real_escape_string() が、 繋がり。これにより、文字エンコーディングの欠陥に関連するリスクが排除されます。
結論:
mysql_real_escape_string() は欠陥の影響を完全に受けないわけではありませんが、mysql_set_charset() を使用して文字エンコーディングを管理します。潜在的な脆弱性の 1 つが解決されます。これらの微妙な違いを理解して対処することで、SQL インジェクション防止のために mysql_real_escape_string() を効果的に利用し続けることができます。
以上がmysql_real_escape_string() は本当に安全ですか?文字エンコーディングの欠陥への対処。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。