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

bind_param()は、ユーザーが入力した値またはすべてにのみ必要ですか?

    技術的には、ユーザー入力から取得されていないデータを準備しなくても、リスクはありません。ただし、いくつかの理由からそうすることを強くお勧めします。

    1. ユーザー入力データをどこかに準備するのを忘れた場合、このユーザーが、ユーザー入力であるとは予想していなかった雑多なものをデータ行に挿入した可能性があります。
    2. サーバーを安全に保つために、実行していることを繰り返すことをお勧めします。混同し始めると、実際に必要な場所でデータを準備することを忘れる可能性がはるかに高くなります。
    3. データの準備は、攻撃者からのSQLインジェクションを防ぐためだけのものではありません。また、誤ってコードにバグを作成した場合に備えて、データベースの問題を防ぐことができます。例:

    コードのどこかに、データベースにエラーログを追加するログシステムがあります。文字列は次のようになります:


    この文字列は、スクリプトによって生成されます。そのため、あなたはそれを準備しません。ただし、この文字列内の引用符は、データベースでエラーを引き起こします。これは、とにかく準備しておけば防ぐことができたはずです。



    1. 特定のポイントから自動インクリメントを開始するにはどうすればよいですか?

    2. ON DUPLICATEKEYUPDATEでの自動インクリメントが多すぎます

    3. Oracle REPLACE()関数は、キャリッジリターンとラインフィードを処理していません

    4. MacでのOracleのJavaを理解する