Rumah > pangkalan data > tutorial mysql > Adakah `mysql_real_escape_string()` dan `mysql_escape_string()` Cukup untuk Melindungi Aplikasi Web Saya Terhadap SQL Injection?

Adakah `mysql_real_escape_string()` dan `mysql_escape_string()` Cukup untuk Melindungi Aplikasi Web Saya Terhadap SQL Injection?

Susan Sarandon
Lepaskan: 2024-12-13 03:16:14
asal
770 orang telah melayarinya

Are `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Secure My Web Application Against SQL Injection?

Adakah mysql_real_escape_string() dan mysql_escape_string() Mencukupi untuk Keselamatan Aplikasi?

Walaupun fungsi ini boleh meningkatkan perlindungan data, ia tidak mencukupi untuk melindungi sepenuhnya aplikasi web daripada semua keselamatan risiko.

SQL Injection

  • Mysql_escape_string() mungkin masih menyebabkan anda terdedah kepada serangan suntikan SQL, terutamanya jika data pembolehubah digunakan dalam pertanyaan.

SUKA SQL Serangan

  • SUKA pertanyaan dengan parameter seperti "�ta%" boleh dieksploitasi untuk mengembalikan semua rekod atau mendedahkan maklumat sensitif, seperti nombor kad kredit penuh.

Eksploitasi Charset

  • Internet Explorer kekal terdedah kepada eksploitasi charset, yang boleh memberikan kawalan pangkalan data jauh kepada pelaku yang berniat jahat.

Eksploitasi LIMIT

  • Mysql_real_escape_string() tidak berkesan terhadap serangan eksploitasi LIMIT yang boleh melaksanakan pertanyaan SQL sewenang-wenangnya dengan memanipulasi LIMIT nilai.

Pertahanan Proaktif: Pernyataan Disediakan

  • Daripada bergantung semata-mata untuk melarikan diri, pertimbangkan untuk menggunakan pernyataan yang disediakan untuk mengelakkan pelaksanaan SQL yang tidak dijangka.
  • Pernyataan yang disediakan menguatkuasakan sintaks SQL bahagian pelayan yang sah, mengurangkan risiko kedua-dua kelemahan yang diketahui dan tidak diketahui.

Contoh Kod

Berikut ialah perbandingan mysql_escape_string() dan pernyataan yang disediakan dalam PHP:

// Escaping Method
$sql = sprintf("SELECT url FROM GrabbedURLs WHERE %s LIKE '%s%%' LIMIT %s",
               mysql_real_escape_string($argv[1]),
               mysql_real_escape_string($argv[2]),
               mysql_real_escape_string($argv[3]));

// Prepared Statement
$statement = $pdo->prepare('SELECT url FROM GrabbedURLs ' .
                           'WHERE ' . $column . '=? ' .
                           'LIMIT ' . intval($limit));
$statement->execute(array($value));
Salin selepas log masuk

Pernyataan yang disediakan, sementara sedikit lebih lama untuk dilaksanakan, menawarkan perlindungan unggul terhadap pertanyaan SQL yang berniat jahat dan mengurangkan kerumitan kod.

Atas ialah kandungan terperinci Adakah `mysql_real_escape_string()` dan `mysql_escape_string()` Cukup untuk Melindungi Aplikasi Web Saya Terhadap SQL Injection?. 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