PHP 小心urldecode引发的SQL注入漏洞_PHP
Ihipop 学校的 Discuz X1.5 论坛被黑,在那里吵了一个下午。Google 一下“Discuz! X1-1.5 notify_credit.php Blind SQL injection exploit”,你就知道。
Discuz 是国内很流行的论坛系统,被黑的网站应该会很多吧。不过我对入侵别人的网站不感兴趣,同时也鄙视那些代码都不会写只会使用别人放出的工具攻击的所谓的“黑客”。
粗略看了一下代码,这个 SQL 注入漏洞是 urldecode 函数造成的。在 PHP 手册中,urldecode 函数下面有一个警告:
The superglobals $_GET and $_REQUEST are already decoded. Using urldecode() on an element in $_GET or $_REQUEST could have unexpected and dangerous results.
而 Discuz 的开发人员(估计是新手)画蛇添足,多加了一个 urldecode:
复制代码 代码如下:
foreach($_POST as $k => $v) {
$value = urldecode($v);
$this->setParameter($k, $value);
}
单引号被 urlencode 两次以后是 %2527,然后 POST,PHP 内部在生成全局变量 $_POST 的时候会先 urldecode,得到 %27,然后 PHP 会检查 Magic Quotes 的设置,但是无论是否开启 Magic Quotes,%27 都不会被 addslashes,因为这时根本没有单引号。但是这时如果你在 PHP 代码中画蛇添足的加上 urldecode,%27就变成单引号了,然后……你懂的。
在我初学 PHP 的时候,看的是学校图书馆的一本烂书,里面根本就没写 PHP 在处理表单的时候会自动 urldecode,所以自己用 urldecode 函数来解码(依稀记得书上好像也是这么写的,真是误人子弟啊)。
总结一下,就是:1、选择一本好书非常重要;2、慎用 urldecode 函数。3、注意 PHP 手册中的警告。
原文来自 http://demon.tw/programming/php-urldecode-sql-injection.html

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Die Funktion urldecode() von PHP wurde in PHP4 erstellt und ist eine gängige Methode zur URL-Dekodierung. Bei der URL-Kodierung handelt es sich um eine Methode zur Umwandlung nicht-englischer Zeichen in einer URL in Sonderzeichen, um die URL an den Server zu übertragen oder die URL anderweitig zu verarbeiten. Die Funktion urldecode() stellt diese Sonderzeichen in der ursprünglichen Zeichenfolge wieder her. Die Syntax dieser Funktion lautet: stringurldecode(string$str) Parameter str stellt das Zeichen dar, das dekodiert werden muss

0x01 Vorwort Übersicht Der Herausgeber hat einen weiteren doppelten Datenüberlauf in MySQL entdeckt. Wenn wir die Funktionen in MySQL erhalten, interessiert sich der Editor mehr für die mathematischen Funktionen. Sie sollten auch einige Datentypen zum Speichern von Werten enthalten. Daher führte der Editor einen Test durch, um festzustellen, welche Funktionen Überlauffehler verursachen würden. Dann stellte der Editor fest, dass die Funktion exp() einen Überlauffehler verursacht, wenn ein Wert größer als 709 übergeben wird. mysql>selectexp(709);+---------+|exp(709)|+---------- - -----------+|8.218407461554972

Nginx ist ein schneller, leistungsstarker und skalierbarer Webserver, und seine Sicherheit ist ein Problem, das bei der Entwicklung von Webanwendungen nicht ignoriert werden darf. Insbesondere SQL-Injection-Angriffe, die Webanwendungen großen Schaden zufügen können. In diesem Artikel besprechen wir, wie man mit Nginx SQL-Injection-Angriffe verhindert und so die Sicherheit von Webanwendungen schützt. Was ist ein SQL-Injection-Angriff? Der SQL-Injection-Angriff ist eine Angriffsmethode, die Schwachstellen in Webanwendungen ausnutzt. Angreifer können Schadcode in Webanwendungen einschleusen

PHP-Programmiertipps: So verhindern Sie SQL-Injection-Angriffe Sicherheit ist bei der Durchführung von Datenbankoperationen von entscheidender Bedeutung. SQL-Injection-Angriffe sind ein häufiger Netzwerkangriff, der die unsachgemäße Verarbeitung von Benutzereingaben durch eine Anwendung ausnutzt, was dazu führt, dass bösartiger SQL-Code eingefügt und ausgeführt wird. Um unsere Anwendung vor SQL-Injection-Angriffen zu schützen, müssen wir einige Vorsichtsmaßnahmen treffen. Verwenden Sie parametrisierte Abfragen. Parametrisierte Abfragen sind die einfachste und effektivste Möglichkeit, SQL-Injection-Angriffe zu verhindern. Es funktioniert durch den Vergleich vom Benutzer eingegebener Werte mit einer SQL-Abfrage

Überblick über die Erkennung und Behebung von PHP-SQL-Injection-Schwachstellen: SQL-Injection bezeichnet eine Angriffsmethode, bei der Angreifer Webanwendungen verwenden, um böswillig SQL-Code in die Eingabe einzuschleusen. PHP ist eine in der Webentwicklung weit verbreitete Skriptsprache und wird häufig zur Entwicklung dynamischer Websites und Anwendungen verwendet. Aufgrund der Flexibilität und Benutzerfreundlichkeit von PHP ignorieren Entwickler jedoch häufig die Sicherheit, was zur Entstehung von SQL-Injection-Schwachstellen führt. In diesem Artikel wird beschrieben, wie SQL-Injection-Schwachstellen in PHP erkannt und behoben werden, und es werden relevante Codebeispiele bereitgestellt. überprüfen

Im Bereich der Netzwerksicherheit sind SQL-Injection-Angriffe eine gängige Angriffsmethode. Es nutzt von böswilligen Benutzern übermittelten Schadcode aus, um das Verhalten einer Anwendung zu ändern und unsichere Vorgänge auszuführen. Zu den gängigen SQL-Injection-Angriffen gehören Abfragevorgänge, Einfügevorgänge und Löschvorgänge. Unter diesen werden Abfrageoperationen am häufigsten angegriffen, und eine gängige Methode zur Verhinderung von SQL-Injection-Angriffen ist die Verwendung von PHP. PHP ist eine häufig verwendete serverseitige Skriptsprache, die häufig in Webanwendungen verwendet wird. PHP kann mit MySQL usw. zusammenhängen.

Hinweise zur Laravel-Entwicklung: Methoden und Techniken zur Verhinderung von SQL-Injection Mit der Entwicklung des Internets und der kontinuierlichen Weiterentwicklung der Computertechnologie ist die Entwicklung von Webanwendungen immer häufiger geworden. Während des Entwicklungsprozesses war Sicherheit schon immer ein wichtiges Thema, das Entwickler nicht ignorieren können. Unter anderem ist die Verhinderung von SQL-Injection-Angriffen eines der Sicherheitsprobleme, das während des Entwicklungsprozesses besondere Aufmerksamkeit erfordert. In diesem Artikel werden verschiedene Methoden und Techniken vorgestellt, die häufig in der Laravel-Entwicklung verwendet werden, um Entwicklern dabei zu helfen, SQL-Injection wirksam zu verhindern. Parameterbindung verwenden Die Parameterbindung ist Lar

PHP-Formularfilterung: Verhinderung und Filterung von SQL-Injections Einführung: Mit der rasanten Entwicklung des Internets ist die Entwicklung von Webanwendungen immer häufiger geworden. In der Webentwicklung sind Formulare eine der häufigsten Formen der Benutzerinteraktion. Allerdings bestehen bei der Verarbeitung der Daten zur Formularübermittlung Sicherheitsrisiken. Eines der häufigsten Risiken sind SQL-Injection-Angriffe. Ein SQL-Injection-Angriff ist eine Angriffsmethode, bei der eine Webanwendung dazu verwendet wird, Benutzereingabedaten falsch zu verarbeiten, sodass der Angreifer nicht autorisierte Datenbankabfragen durchführen kann. Der Angreifer passiert die
