Új hozzászólás Aktív témák

  • Taci

    addikt

    Sziasztok!

    Az sqlsrv_query és a bind_param használata "kizárja egymást"?

    Eredetileg így néz ki egy lekérdezésem előkészítése (példa):
    $sql = "INSERT INTO " . $table . " (id, name, date) VALUES (?,?,?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("iss", $id, $name, $date);

    De most, ahogy olvasgatom, hogy kell megvédeni egy PHP-alapú weboldalt, és rátaláltam az SQL Injection Attacks-re, tippnek a sqlsrv_query használatát látom.

    És ha jól látom, ez alapján a fenti példával ez így nézne ki:
    $sql = "INSERT INTO " . $table . " (id, name, date) VALUES (?,?,?)";
    $params = array($id, $name, $date);
    $stmt = sqlsrv_query( $conn, $sql, $params);

    - A bind_param az ugye akkor kell, ha gyakori a lekérdezés, mert így hatékonyabb. De akkor ezek szerint ezzel is kijátszható a kód (SQL Injection Attack)?
    - Ha pedig átváltok az ajánlott sqlsrv_query-re, akkor bár védve leszek az injection-támadások ellen, de bukom a bind_param (prepared statement) általi hatékonyságot?

    Vagy hogy van ez? Lehet/kell ezeket "mixelni"? Vagy elég csak az egyik, hogy mindkét előnyt (hatékonyság + védelem) megtarthassam?

    Köszi!

    Amúgy próbáltam az itt említett példán keresztül "megtámadni" az adatbázis, de sehogy sem fogadta el a Drop Table kódrészt (saját adatbázisra szabva, persze). Szóval nem tudom kipróbálni, melyik a jó megoldás.

Új hozzászólás Aktív témák