Heim Backend-Entwicklung PHP-Tutorial 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% 这样的查询语句失效。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Sicherheitsrisiken und Präventionsmethoden in Vue-Projekten Sicherheitsrisiken und Präventionsmethoden in Vue-Projekten Jun 11, 2023 pm 10:10 PM

Vue ist ein beliebtes JavaScript-Framework, das häufig zum Erstellen von Single-Page-Anwendungen verwendet wird. Bei der Entwicklung eines Vue-Projekts sind Sicherheitsaspekte ein zentrales Thema, auf das man achten muss, da Vue bei manchen unsachgemäßen Vorgängen zum Ziel von Angreifern werden kann. In diesem Artikel stellen wir häufige Sicherheitsrisiken in Vue-Projekten vor und wie man sie verhindert. XSS-Angriff Unter XSS-Angriff versteht man einen Angreifer, der Schwachstellen einer Website ausnutzt, um Benutzerseiten zu manipulieren oder Informationen durch das Einschleusen von Code zu stehlen. In Vue

So verwenden Sie Nginx zum Schutz vor LDAP-Injection-Angriffen So verwenden Sie Nginx zum Schutz vor LDAP-Injection-Angriffen Jun 10, 2023 pm 08:19 PM

Mit der Zunahme von Sicherheitslücken in Netzwerken sind LDAP-Injection-Angriffe zu einem Sicherheitsrisiko für viele Websites geworden. Um die Sicherheit der Website zu schützen und LDAP-Injection-Angriffe zu verhindern, müssen einige Sicherheitsmaßnahmen eingesetzt werden. Unter anderem kann uns Nginx als leistungsstarker Webserver und Reverse-Proxy-Server viel Komfort und Schutz bieten. In diesem Artikel wird erläutert, wie Sie Nginx verwenden, um LDAP-Injection-Angriffe zu verhindern. LDAP-Injection-Angriff Der LDAP-Injection-Angriff ist eine Angriffsmethode, die auf die LDAP-Datenbank abzielt

Analyse und Vermeidung typischer Schwachstellen von Netzwerkanwendungen Analyse und Vermeidung typischer Schwachstellen von Netzwerkanwendungen Jun 11, 2023 pm 08:36 PM

Mit der Popularisierung des Internets erscheinen immer mehr Netzwerkanwendungen und überall gibt es verschiedene Websites, APPs, kleine Programme usw. Netzwerkanwendungen bringen uns Komfort und Unterhaltung, bringen aber auch Sicherheitsrisiken mit sich. Das Vorhandensein von Sicherheitslücken in Netzwerkanwendungen kann von Hackern leicht ausgenutzt werden, was zu Sicherheitsproblemen wie Datenlecks, Diebstahl persönlicher Daten, Kontodiebstahl und Netzwerkangriffen führt. Dieser Artikel beginnt mit häufigen Schwachstellen in Netzwerkanwendungen, analysiert die Ursachen und bietet vorbeugende Maßnahmen. SQL-Injection-Sicherheitslücke Die SQL-Injection-Sicherheitslücke ist eine häufige Sicherheitslücke, die von Hackern zum Angriff auf Datenbanken ausgenutzt wird

Verhinderung von Cross-Site-Scripting (XSS)-Angriffen in der Go-Sprache: Best Practices und Tipps Verhinderung von Cross-Site-Scripting (XSS)-Angriffen in der Go-Sprache: Best Practices und Tipps Jun 17, 2023 pm 12:46 PM

Mit der rasanten Entwicklung des Internets sind Website-Sicherheitsprobleme zu einem großen Problem in der Online-Welt geworden. Cross-Site-Scripting-Angriffe (XSS) sind eine häufige Sicherheitslücke, bei der Schwachstellen von Websites ausgenutzt werden, um bösartige Skripts in Webseiten einzuschleusen, um Benutzerinformationen zu stehlen und zu manipulieren. Als effiziente und sichere Programmiersprache bietet uns die Go-Sprache leistungsstarke Tools und Techniken zur Verhinderung von XSS-Angriffen. In diesem Artikel werden einige Best Practices und Techniken vorgestellt, die Go-Sprachentwicklern helfen sollen, XSS-Angriffe effektiv zu verhindern und zu beheben. für alle Eingänge

PHP-Sicherheitsschutz: Vermeiden Sie Injektionsangriffe PHP-Sicherheitsschutz: Vermeiden Sie Injektionsangriffe Jun 24, 2023 am 09:22 AM

In der heutigen Online-Welt ist die Netzwerksicherheit ein großes Problem. Sowohl einzelne Benutzer als auch Unternehmensorganisationen müssen der Sicherheit von Netzwerksystemen besondere Aufmerksamkeit widmen. Insbesondere bei der Entwicklung und Wartung von Websites gehören Injektionsangriffe zu den häufigsten Sicherheitslücken. Als weit verbreitete Programmiersprache bei der Website-Entwicklung ist PHP noch anfälliger für Injektionsangriffe. Daher stellt Ihnen dieser Artikel die PHP-Sicherheitsschutzmethoden vor, um Injektionsangriffe zu vermeiden. Was ist ein Injektionsangriff? Unter Injektionsangriffen versteht man zunächst einmal, dass Hacker Schwachstellen in Netzwerksystemen ausnutzen

Wie Nginx vor XML-Injection-Angriffen schützt Wie Nginx vor XML-Injection-Angriffen schützt Jun 11, 2023 am 08:20 AM

Der XML-Injection-Angriff ist eine gängige Netzwerkangriffsmethode, bei der Angreifer böswillig injizierten XML-Code an Anwendungen weitergeben, um sich unbefugten Zugriff zu verschaffen oder böswillige Vorgänge auszuführen. Nginx ist ein beliebter Webserver und Reverse-Proxy-Server, der auf verschiedene Weise vor XML-Injection-Angriffen schützen kann. Eingaben filtern und validieren Alle Dateneingaben in den Server, einschließlich XML-Eingaben, sollten gefiltert und validiert werden. Nginx bietet einige integrierte Module, die Anfragen verarbeiten können, bevor sie sie an den Backend-Dienst weiterleiten.

So verwenden Sie Nginx, um Apache-Flag-Injection-Angriffe zu verhindern So verwenden Sie Nginx, um Apache-Flag-Injection-Angriffe zu verhindern Jun 10, 2023 pm 03:17 PM

Im Bereich der Netzwerksicherheit sind Apache-Flag-Injection-Angriffe eine relativ häufige Angriffsmethode. Angreifer nutzen bestimmte Schwachstellen oder bestimmte HTTP-Anforderungsparameter, um Anforderungsheader zu fälschen und so den Server dazu zu verleiten, unerwartete Vorgänge auszuführen oder bösartigen Code auszuführen. Um diesen Angriff zu verhindern, können wir Nginx als Reverse-Proxy-Server zur Bearbeitung von Anfragen verwenden. Im Folgenden wird beschrieben, wie Sie Nginx verwenden, um Apache-Flag-Injection-Angriffe zu verhindern. Legen Sie den Nginx-Reverse-Proxy fest. Nginx kann die Anfrage bei der Verarbeitung der Anfrage weiterleiten

MySql SQL-Injection-Angriff: So verhindern und lösen Sie ihn MySql SQL-Injection-Angriff: So verhindern und lösen Sie ihn Jun 15, 2023 pm 10:16 PM

MySQL ist eine häufig verwendete relationale Datenbank. Obwohl sie über hohe Sicherheitsmerkmale verfügt, ist sie auch ständig der Gefahr von SQL-Injection-Angriffen ausgesetzt. Ein SQL-Injection-Angriff ist eine häufige Angriffsmethode, bei der Hacker die Authentifizierung und Autorisierung der Anwendung umgehen, indem sie bösartige SQL-Abfrageanweisungen erstellen und dann die Daten in der Datenbank abrufen oder zerstören. Im Folgenden stellen wir SQL-Injection-Angriffe vor und zeigen, wie man solche Angriffe verhindern und beheben kann. Das Prinzip des SQL-Injection-Angriffs Das grundlegendste Prinzip des SQL-Injection-Angriffs ist das Passen

See all articles