Rumah pembangunan bahagian belakang tutorial php PHP与SQL注入攻击防范小技巧_PHP

PHP与SQL注入攻击防范小技巧_PHP

Jun 01, 2016 pm 12:14 PM
serangan suntikan langkah berjaga-jaga

下面来谈谈SQL注入攻击是如何实现的,又如何防范。

 看这个例子:
复制代码 代码如下:
// supposed input
$name = "ilia'; DELETE FROM users;";
mysql_query("SELECT * FROM users WHERE name='{$name}'");

 很明显最后数据库执行的命令是:

SELECT * FROM users WHERE name=ilia; DELETE FROM users

 这就给数据库带来了灾难性的后果–所有记录都被删除了。

 不过如果你使用的数据库是MySQL,那么还好,mysql_query()函数不允许直接执行这样的操作(不能单行进行多个语句操作),所以你可以放心。如果你使用的数据库是SQLite或者PostgreSQL,支持这样的语句,那么就将面临灭顶之灾了。

 上面提到,SQL注入主要是提交不安全的数据给数据库来达到攻击目的。为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全上的初步处理,也即Magic Quotes。(php.ini magic_quotes_gpc)。如果magic_quotes_gpc选项启用,那么输入的字符串中的单引号,双引号和其它一些字符前将会被自动加上反斜杠\。

 但Magic Quotes并不是一个很通用的解决方案,没能屏蔽所有有潜在危险的字符,并且在许多服务器上Magic Quotes并没有被启用。所以,我们还需要使用其它多种方法来防止SQL注入。

 许多数据库本身就提供这种输入数据处理功能。例如PHP的MySQL操作函数中有一个叫mysql_real_escape_string()的函数,可将特殊字符和可能引起数据库操作出错的字符转义。

 看这段代码:
复制代码 代码如下:
//如果Magic Quotes功用启用
if (get_magic_quotes_gpc()) {
$name = stripslashes($name);
}else{
$name = mysql_real_escape_string($name);
}

mysql_query("SELECT * FROM users WHERE name='{$name}'");

 注意,在我们使用数据库所带的功能之前要判断一下Magic Quotes是否打开,就像上例中那样,否则两次重复处理就会出错。如果MQ已启用,我们要把加上的\去掉才得到真实数据。

 除了对以上字符串形式的数据进行预处理之外,储存Binary数据到数据库中时,也要注意进行预处理。否则数据可能与数据库自身的存储格式相冲突,引起数据库崩溃,数据记录丢失,甚至丢失整个库的数据。有些数据库如 PostgreSQL,提供一个专门用来编码二进制数据的函数pg_escape_bytea(),它可以对数据进行类似于Base64那样的编码。

 如:
复制代码 代码如下:
// for plain-text data use:
pg_escape_string($regular_strings);

// for binary data use:
pg_escape_bytea($binary_data);

 另一种情况下,我们也要采用这样的机制。那就是数据库系统本身不支持的多字节语言如中文,日语等。其中有些的ASCII范围和二进制数据的范围重叠。

 不过对数据进行编码将有可能导致像LIKE abc% 这样的查询语句失效。

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Risiko keselamatan dan kaedah pencegahan dalam projek Vue Risiko keselamatan dan kaedah pencegahan dalam projek Vue Jun 11, 2023 pm 10:10 PM

Vue ialah rangka kerja JavaScript yang popular digunakan secara meluas untuk membina aplikasi satu halaman. Apabila membangunkan projek Vue, isu keselamatan merupakan isu utama yang perlu diberi perhatian, kerana di bawah beberapa operasi yang tidak betul, Vue boleh menjadi sasaran penyerang. Dalam artikel ini, kami akan memperkenalkan risiko keselamatan biasa dalam projek Vue dan cara mencegahnya. Serangan XSS Serangan XSS merujuk kepada penyerang yang mengambil kesempatan daripada kelemahan tapak web untuk mengusik halaman pengguna atau mencuri maklumat dengan menyuntik kod. Dalam Vue

Cara menggunakan Nginx untuk melindungi daripada serangan suntikan LDAP Cara menggunakan Nginx untuk melindungi daripada serangan suntikan LDAP Jun 10, 2023 pm 08:19 PM

Dengan peningkatan dalam kelemahan keselamatan rangkaian, serangan suntikan LDAP telah menjadi risiko keselamatan yang dihadapi oleh banyak tapak web. Untuk melindungi keselamatan tapak web dan mencegah serangan suntikan LDAP, beberapa langkah keselamatan perlu digunakan. Antaranya, Nginx, sebagai pelayan web berprestasi tinggi dan pelayan proksi terbalik, boleh memberikan kami banyak kemudahan dan perlindungan. Artikel ini akan memperkenalkan cara menggunakan Nginx untuk mencegah serangan suntikan LDAP. Serangan suntikan LDAP Serangan suntikan LDAP ialah kaedah serangan yang menyasarkan pangkalan data LDAP yang digunakan oleh penyerang

Perlindungan keselamatan PHP: elakkan serangan suntikan Perlindungan keselamatan PHP: elakkan serangan suntikan Jun 24, 2023 am 09:22 AM

Dalam dunia dalam talian hari ini, keselamatan rangkaian adalah masalah utama. Kedua-dua pengguna individu dan organisasi korporat perlu memberi perhatian khusus kepada keselamatan sistem rangkaian. Terutama dalam proses pembangunan dan penyelenggaraan laman web, serangan suntikan adalah salah satu kelemahan keselamatan yang biasa. Sebagai bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan laman web, PHP lebih terdedah kepada serangan suntikan. Oleh itu, artikel ini akan memperkenalkan anda kepada kaedah perlindungan keselamatan PHP untuk mengelakkan serangan suntikan. Apakah serangan suntikan? Pertama sekali, serangan suntikan merujuk kepada penggodam yang mengeksploitasi kelemahan dalam sistem rangkaian

Analisis dan pencegahan kelemahan aplikasi rangkaian biasa Analisis dan pencegahan kelemahan aplikasi rangkaian biasa Jun 11, 2023 pm 08:36 PM

Dengan popularisasi Internet, semakin banyak aplikasi rangkaian muncul, dan pelbagai tapak web, APP, program kecil, dll. ada di mana-mana. Aplikasi rangkaian memberi kita kemudahan dan hiburan, tetapi ia juga membawa risiko keselamatan. Kewujudan kelemahan aplikasi rangkaian dengan mudah boleh dieksploitasi oleh penggodam, yang membawa kepada isu keselamatan seperti kebocoran data, kecurian maklumat peribadi, kecurian akaun, dan serangan rangkaian. Artikel ini akan bermula dengan kelemahan aplikasi rangkaian biasa, menganalisis punca dan menyediakan langkah pencegahan. Kerentanan suntikan SQL Kerentanan suntikan SQL ialah kelemahan biasa yang dieksploitasi oleh penggodam untuk menyerang pangkalan data

Pencegahan serangan penskripan tapak (XSS) dalam Go: amalan terbaik dan petua Pencegahan serangan penskripan tapak (XSS) dalam Go: amalan terbaik dan petua Jun 17, 2023 pm 12:46 PM

Dengan perkembangan pesat Internet, isu keselamatan laman web telah menjadi masalah utama dalam dunia dalam talian. Serangan skrip silang tapak (XSS) ialah kelemahan keselamatan biasa yang mengeksploitasi kelemahan tapak web untuk menyuntik skrip berniat jahat ke dalam halaman web untuk mencuri dan mengganggu maklumat pengguna. Sebagai bahasa pengaturcaraan yang cekap dan selamat, bahasa Go memberikan kami alat dan teknik yang berkuasa untuk mencegah serangan XSS. Artikel ini akan memperkenalkan beberapa amalan dan teknik terbaik untuk membantu pembangun bahasa Go mencegah dan menyelesaikan serangan XSS dengan berkesan. untuk semua input

Bagaimana Nginx melindungi daripada serangan suntikan XML Bagaimana Nginx melindungi daripada serangan suntikan XML Jun 11, 2023 am 08:20 AM

Serangan suntikan XML ialah bentuk biasa serangan rangkaian di mana penyerang menghantar kod XML yang disuntik secara berniat jahat kepada aplikasi untuk mendapatkan akses tanpa kebenaran atau melakukan operasi berniat jahat. Nginx ialah pelayan web popular dan pelayan proksi terbalik yang boleh melindungi daripada serangan suntikan XML dalam pelbagai cara. Tapis dan sahkan input Semua input data ke pelayan, termasuk input XML, harus ditapis dan disahkan. Nginx menyediakan beberapa modul terbina dalam yang boleh memproses permintaan sebelum memproksinya ke perkhidmatan backend.

Cara menggunakan Nginx untuk mengelakkan serangan suntikan bendera Apache Cara menggunakan Nginx untuk mengelakkan serangan suntikan bendera Apache Jun 10, 2023 pm 03:17 PM

Dalam bidang keselamatan rangkaian, serangan suntikan bendera Apache ialah kaedah serangan yang agak biasa Penyerang menggunakan kelemahan tertentu atau parameter permintaan HTTP tertentu untuk memalsukan pengepala permintaan, dengan itu memperdaya pelayan untuk melakukan operasi yang tidak dijangka atau melaksanakan kod berniat jahat. Untuk mengelakkan serangan ini, kami boleh menggunakan Nginx sebagai pelayan proksi terbalik untuk mengendalikan permintaan. Berikut menerangkan cara menggunakan Nginx untuk menghalang serangan suntikan bendera Apache. Tetapkan proksi terbalik Nginx Nginx boleh memajukan permintaan semasa memproses permintaan

Cegah serangan pemalsuan permintaan merentas tapak di Jawa Cegah serangan pemalsuan permintaan merentas tapak di Jawa Aug 07, 2023 am 08:51 AM

Cegah serangan pemalsuan permintaan merentas tapak di Jawa Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet, isu keselamatan rangkaian telah menjadi semakin ketara. Salah satu daripadanya ialah serangan Pemalsuan Permintaan Silang Tapak (CSRF), iaitu kaedah serangan yang menggunakan identiti log masuk pengguna untuk memulakan permintaan berniat jahat. Artikel ini akan memperkenalkan cara untuk menghalang serangan pemalsuan permintaan merentas tapak dalam Java dan memberikan contoh kod yang sepadan. Apakah serangan pemalsuan permintaan merentas tapak? Serangan pemalsuan permintaan merentas tapak berlaku apabila penyerang

See all articles