Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Saya Boleh Melarikan Diri dengan Selamat daripada Rentetan dalam Pertanyaan Pelayan SQL Menggunakan PHP?

Bagaimanakah Saya Boleh Melarikan Diri dengan Selamat daripada Rentetan dalam Pertanyaan Pelayan SQL Menggunakan PHP?

Linda Hamilton
Lepaskan: 2024-12-09 02:05:14
asal
190 orang telah melayarinya

How Can I Safely Escape Strings in SQL Server Queries Using PHP?

Melepaskan Rentetan dalam Pelayan SQL Menggunakan PHP: Panduan Komprehensif

Apabila bekerja dengan SQL Server menggunakan PHP, adalah penting untuk melindungi data anda daripada Serangan suntikan SQL dengan melepaskan rentetan dengan betul. Ini ialah teknik untuk menghalang input berniat jahat daripada ditafsirkan sebagai arahan SQL.

Alternatif kepada mysql_real_escape_string()

Tidak seperti MySQL, SQL Server tidak menyediakan terbina dalam fungsi yang setara dengan mysql_real_escape_string().

Masukkan addslashes()

addslashes() ialah fungsi PHP yang sering dianggap sebagai alternatif berpotensi untuk rentetan melarikan diri. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa addslashes() tidak mencukupi sepenuhnya untuk digunakan dengan pangkalan data SQL Server.

Penyelesaian yang Lebih Teguh

Penyelesaian yang ideal ialah mengekod secara manual data sebagai rentetan bait heks. Berikut ialah coretan kod untuk membimbing anda:

$unpacked = unpack('H*hex', $data);
mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (0x' . $unpacked['hex'] . ')
');
Salin selepas log masuk

Abstraksi untuk Escape Boleh Digunakan Semula

Untuk memudahkan dan menggunakan semula proses melarikan diri, anda boleh mencipta fungsi tersuai seperti ini:

function mssql_escape($data) {
    if(is_numeric($data))
        return $data;
    $unpacked = unpack('H*hex', $data);
    return '0x' . $unpacked['hex'];
}

mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (' . mssql_escape($somevalue) . ')
');
Salin selepas log masuk

Alternatif kepada mysql_error()

Untuk pengendalian ralat, SQL Server menyediakan mssql_get_last_message() sebagai alternatif kepada mysql_error().

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melarikan Diri dengan Selamat daripada Rentetan dalam Pertanyaan Pelayan SQL Menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan