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

php:$_POSTからのSQLインジェクションを防ぐ方法

    実行できるように見えるので、失敗した場合はその方法を説明してください。

    ただし、すぐに目に見える間違いが1つあります。それは、行内

    $sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                             LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                      FROM DOC_TO'.$sWhere.$sOrder.$sLimit.')";
    

    二重引用符で文字列を開始し、一重引用符で文字列を中断しようとしましたが、これは機能しません。したがって、コードは次のようになります。

    $sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                             LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                      FROM DOC_TO".$sWhere.$sOrder.$sLimit.")";
    

    さらに、環境によっては、コードに重要なセキュリティ上の欠陥があります。たとえば、次の行にあります

    $sLimit = " FIRST ".$_POST['iDisplayStart']." SKIP ".$_POST['iDisplayLength'];
    

    $ _POSTを使用してSQLクエリに直接配置しているため、いわゆるSQLインジェクションのセキュリティホールが開かれます。



    1. 初心者のための5つの実用的なデータベースのヒント

    2. ddevで2番目のデータベースを作成してロードするにはどうすればよいですか?

    3. テスト用のHSQLに欠落しているシーケンス

    4. Mysqlの構文は正しいようです