cari
Rumahpembangunan bahagian belakangtutorial phpPHP与SQL注入攻击防范小技巧_php技巧

下面来谈谈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
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
Vue项目中的安全隐患及防范方法Vue项目中的安全隐患及防范方法Jun 11, 2023 pm 10:10 PM

Vue是一款流行的JavaScript框架,广泛用于构建单页面应用程序。在开发Vue项目时,安全问题是需要关注的一个关键问题,因为在一些不当的操作下,Vue可以成为攻击者攻击的目标。在本文中,我们将介绍Vue项目中常见的安全隐患,以及如何防范这些隐患。XSS攻击XSS攻击是指攻击者利用网站漏洞,通过注入代码的方式,实现对用户页面的篡改或者信息的盗取。在Vue

如何使用Nginx防范LDAP注入攻击如何使用Nginx防范LDAP注入攻击Jun 10, 2023 pm 08:19 PM

随着网络安全漏洞增多,LDAP注入攻击已经成为了很多网站面临的安全隐患。为了保护网站安全,防范LDAP注入攻击,需要使用一些安全措施。其中,Nginx作为一个高性能的Web服务器和反向代理服务器,可以为我们提供很多便利和保护。这篇文章将介绍如何使用Nginx防范LDAP注入攻击。LDAP注入攻击LDAP注入攻击是一种针对LDAP数据库的攻击方式,攻击者通过在

典型网络应用漏洞分析与防范典型网络应用漏洞分析与防范Jun 11, 2023 pm 08:36 PM

随着互联网的普及,网络应用的出现越来越多,各种网站、APP、小程序等无处不在。网络应用为我们带来了便利和娱乐,但同时也带来了安全隐患。网络应用漏洞的存在,很容易被黑客利用,从而导致数据泄露、个人信息被盗、账户被盗、网络攻击等安全问题。本文将从常见的网络应用漏洞入手,分析原因并提供防范措施。SQL注入漏洞SQL注入漏洞是一种被黑客利用来攻击数据库的一种常见漏洞

PHP安全防护:避免注入攻击PHP安全防护:避免注入攻击Jun 24, 2023 am 09:22 AM

在今天的网络世界中,网络安全问题是一大难题。无论是个人用户还是企业机构都需要对网络系统的安全性格外重视。特别是在网站的开发和维护过程中,注入攻击是一种常见的安全漏洞之一。而PHP作为一种在网站开发中广泛应用的编程语言,更是容易受到注入攻击。因此,本文将为您介绍PHP安全防护方法,以避免注入攻击。什么是注入攻击?首先,注入攻击指的是黑客利用网络系统中存在的漏洞

如何使用Nginx防范apache flag注入攻击如何使用Nginx防范apache flag注入攻击Jun 10, 2023 pm 03:17 PM

在网络安全领域中,Apache标志注入攻击是一种比较常见的攻击方式,攻击者在利用某些漏洞或者特定的HTTP请求参数来伪造请求标头,从而欺骗服务器执行意外的操作或者执行恶意代码。为了防范这种攻击,我们可以将Nginx作为反向代理服务器来处理请求。下面介绍如何使用Nginx防范Apache标志注入攻击。设置Nginx反向代理Nginx在处理请求时,可以将请求转发

Nginx如何防范XML注入攻击Nginx如何防范XML注入攻击Jun 11, 2023 am 08:20 AM

XML注入攻击是一种常见的网络攻击方式,攻击者将恶意注入的XML代码传递给应用程序,以获取未授权的访问权限或执行恶意操作。Nginx是一款流行的Web服务器和反向代理服务器,可以通过多种方式来防范XML注入攻击。对输入进行过滤和验证对于所有输入到服务器的数据,包括XML输入,应该进行过滤和验证。Nginx提供了一些内置的模块,可以在代理请求到后端服务之前,对

Go语言中的跨站点脚本(XSS)攻击防范:最佳实践和技巧Go语言中的跨站点脚本(XSS)攻击防范:最佳实践和技巧Jun 17, 2023 pm 12:46 PM

随着互联网的快速发展,网站安全问题已经成为了网络世界中的一大难题。跨站点脚本(XSS)攻击是一种常见的安全漏洞,它利用网站的弱点,将恶意脚本注入到网页中,从而对用户的信息进行窃取和篡改。Go语言作为一种高效、安全的编程语言,为我们提供了强有力的防范XSS攻击的工具和技巧。本文将介绍一些最佳实践和技巧,帮助Go语言开发者有效地预防和解决XSS攻击。对所有输入进

如何在PHP语言开发中避免日志文件注入攻击?如何在PHP语言开发中避免日志文件注入攻击?Jun 10, 2023 pm 08:48 PM

随着互联网技术的发展,网站的安全性问题越来越受到关注。其中,日志文件注入攻击是攻击者利用日志文件的输出功能,将恶意内容写入日志文件中,从而达到攻击和破坏的目的。在PHP语言开发中,使用日志功能是非常常见的。因此,如何在PHP语言开发中避免日志文件注入攻击是一个值得关注的问题。一、日志文件注入攻击的原理在PHP开发中,很多代码都会使用日志功能,通过记录系统运行

See all articles

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),