Maison développement back-end tutoriel php PHP与SQL注入攻击防范小技巧_php技巧

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

May 17, 2016 am 09:15 AM
注入攻击 防范

下面来谈谈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% 这样的查询语句失效。
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Risques de sécurité et méthodes de prévention dans les projets Vue Risques de sécurité et méthodes de prévention dans les projets Vue Jun 11, 2023 pm 10:10 PM

Vue est un framework JavaScript populaire largement utilisé pour créer des applications monopage. Lors du développement d'un projet Vue, les problèmes de sécurité sont un problème clé auquel il faut prêter attention, car en cas d'opérations inappropriées, Vue peut devenir la cible d'attaquants. Dans cet article, nous présenterons les risques de sécurité courants dans les projets Vue et comment les prévenir. Attaque XSS L'attaque XSS fait référence à un attaquant tirant parti des vulnérabilités d'un site Web pour falsifier les pages des utilisateurs ou voler des informations en injectant du code. Dans Vue

Comment utiliser Nginx pour se protéger contre les attaques par injection LDAP Comment utiliser Nginx pour se protéger contre les attaques par injection LDAP Jun 10, 2023 pm 08:19 PM

Avec l’augmentation des vulnérabilités de sécurité des réseaux, les attaques par injection LDAP sont devenues un risque de sécurité auquel sont confrontés de nombreux sites Web. Afin de protéger la sécurité du site Web et de prévenir les attaques par injection LDAP, certaines mesures de sécurité doivent être utilisées. Parmi eux, Nginx, en tant que serveur Web hautes performances et serveur proxy inverse, peut nous offrir beaucoup de commodité et de protection. Cet article explique comment utiliser Nginx pour empêcher les attaques par injection LDAP. Attaque par injection LDAP L'attaque par injection LDAP est une méthode d'attaque ciblant la base de données LDAP.

Analyse et prévention des vulnérabilités typiques des applications réseau Analyse et prévention des vulnérabilités typiques des applications réseau Jun 11, 2023 pm 08:36 PM

Avec la popularisation d'Internet, de plus en plus d'applications réseau apparaissent et divers sites Web, applications, petits programmes, etc. sont partout. Les applications réseau nous apportent commodité et divertissement, mais elles comportent également des risques pour la sécurité. L'existence de vulnérabilités des applications réseau peut facilement être exploitée par des pirates informatiques, entraînant des problèmes de sécurité tels que des fuites de données, le vol d'informations personnelles, le vol de comptes et des attaques réseau. Cet article commencera par les vulnérabilités courantes des applications réseau, analysera les causes et proposera des mesures préventives. Vulnérabilité d'injection SQL La vulnérabilité d'injection SQL est une vulnérabilité courante exploitée par les pirates pour attaquer les bases de données.

Prévention des attaques par cross-site scripting (XSS) dans Go : bonnes pratiques et conseils Prévention des attaques par cross-site scripting (XSS) dans Go : bonnes pratiques et conseils Jun 17, 2023 pm 12:46 PM

Avec le développement rapide d’Internet, les problèmes de sécurité des sites Web sont devenus un problème majeur dans le monde en ligne. L'attaque de script intersite (XSS) est une vulnérabilité de sécurité courante qui exploite les faiblesses des sites Web pour injecter des scripts malveillants dans les pages Web afin de voler et de falsifier les informations des utilisateurs. En tant que langage de programmation efficace et sûr, le langage Go nous fournit des outils et techniques puissants pour prévenir les attaques XSS. Cet article présentera quelques bonnes pratiques et techniques pour aider les développeurs du langage Go à prévenir et à résoudre efficacement les attaques XSS. pour toutes les entrées

Protection de sécurité PHP : évitez les attaques par injection Protection de sécurité PHP : évitez les attaques par injection Jun 24, 2023 am 09:22 AM

Dans le monde en ligne d'aujourd'hui, la sécurité des réseaux constitue un problème majeur. Les utilisateurs individuels et les entreprises doivent accorder une attention particulière à la sécurité des systèmes réseau. En particulier lors du développement et de la maintenance de sites Web, les attaques par injection constituent l’une des vulnérabilités de sécurité les plus courantes. En tant que langage de programmation largement utilisé dans le développement de sites Web, PHP est encore plus vulnérable aux attaques par injection. Par conséquent, cet article vous présentera les méthodes de protection de sécurité PHP pour éviter les attaques par injection. Qu’est-ce qu’une attaque par injection ? Tout d’abord, les attaques par injection font référence aux pirates informatiques exploitant les vulnérabilités des systèmes réseau.

Comment Nginx se protège contre les attaques par injection XML Comment Nginx se protège contre les attaques par injection XML Jun 11, 2023 am 08:20 AM

Les attaques par injection XML sont une forme courante d'attaque réseau dans laquelle les attaquants transmettent du code XML injecté de manière malveillante à des applications pour obtenir un accès non autorisé ou effectuer des opérations malveillantes. Nginx est un serveur Web et un serveur proxy inverse populaire qui peut protéger contre les attaques par injection XML de diverses manières. Filtrer et valider les entrées Toutes les données entrées sur le serveur, y compris les entrées XML, doivent être filtrées et validées. Nginx fournit des modules intégrés qui peuvent traiter les requêtes avant de les transmettre par proxy au service backend.

Comment utiliser Nginx pour empêcher les attaques par injection de drapeau Apache Comment utiliser Nginx pour empêcher les attaques par injection de drapeau Apache Jun 10, 2023 pm 03:17 PM

Dans le domaine de la sécurité des réseaux, les attaques par injection de drapeaux Apache sont une méthode d'attaque relativement courante. Les attaquants utilisent certaines vulnérabilités ou paramètres de requête HTTP spécifiques pour forger des en-têtes de requête, incitant ainsi le serveur à effectuer des opérations inattendues ou à exécuter du code malveillant. Pour empêcher cette attaque, nous pouvons utiliser Nginx comme serveur proxy inverse pour gérer les requêtes. Ce qui suit décrit comment utiliser Nginx pour empêcher les attaques par injection de drapeau Apache. Définir le proxy inverse Nginx Nginx peut transmettre la demande lors du traitement de la demande

Attaque par injection SQL MySql : comment prévenir et résoudre Attaque par injection SQL MySql : comment prévenir et résoudre Jun 15, 2023 pm 10:16 PM

MySQL est une base de données relationnelle couramment utilisée. Bien qu'elle présente des caractéristiques de sécurité élevées, elle est également constamment confrontée à la menace d'attaques par injection SQL. L'attaque par injection SQL est une méthode d'attaque courante. Les pirates contournent l'authentification et l'autorisation de l'application en construisant des instructions de requête SQL malveillantes, puis obtiennent ou détruisent les données de la base de données. Ci-dessous, nous présenterons les attaques par injection SQL et comment prévenir et résoudre de telles attaques. Le principe de l'attaque par injection SQL Le principe le plus fondamental de l'attaque par injection SQL est de passer

See all articles