sql >> データベース >  >> RDS >> Mysql

mysql_real_escape_string()はSQLインジェクションから完全に保護しますか?

    Stefan Esserによると、 "mysql_real_escape_string() [is] SET NAMESの場合は安全ではありません 使用されます。」

    彼の説明、彼のブログから

    SET NAMESは通常、エンコーディングをデフォルトからアプリケーションが必要とするものに切り替えるために使用されます。これは、mysql_real_escape_stringの方法で行われます。 これについては知りません。これは、2番目3番目4番目…バイトとしてバックスラッシュを許可するマルチバイトエンコーディングに切り替えると、mysql_real_escape_stringが原因で、問題が発生することを意味します。 正しく逃げません。 UTF-8は安全です…

    エンコーディングを安全に変更する方法は、mysql_set_charsetです。 、ただし、これは新しいPHPバージョンでのみ使用できます

    ただし、UTF-8は安全であると彼は述べています。



    1. IntegrityErrorの重複キー値が一意の制約に違反しています-django/postgres

    2. SQL結合タイプの概要と例

    3. Postgres/PostgreSQLテーブルとそのインデックスのディスクサイズをどのように見つけますか

    4. MySQLで英数字以外の文字のみを含む行を返す2つの方法