Inhaltsverzeichnis
Antwortinhalt:
Heim Backend-Entwicklung PHP-Tutorial Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?

Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?

Aug 04, 2016 am 09:21 AM
mysql php sql sql注入 Injektion

1. Formulardaten
Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?
zeigt die Formulardaten an

Die erfassten Formulardaten von 2.php
Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?
wurden automatisch hinzugefügt

3.MySQL-Daten (unterste Zeile)
Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?
werden in MySQL geschrieben, aber es gibt kein

4. Ich vermute, dass es von der MySQL-Software ausgeblendet wird:
Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?
Ich habe es auch nicht gesehen

Laut offizieller Stellungnahme
http://www.php.net/manual/zh/function.addslashes.php

Ein Beispiel für die Verwendung von addslashes() ist die Eingabe von Daten in eine Datenbank. Wenn Sie beispielsweise den Namen O'reilly in die Datenbank einfügen möchten, müssen Sie ihn maskieren. Es wird dringend empfohlen, die DBMS-spezifische Escape-Funktion zu verwenden (z. B. mysqli_real_escape_string() für MySQL, pg_escape_string() für PostgreSQL). Wenn das von Ihnen verwendete DBMS jedoch keine Escape-Funktion hat und Sonderzeichen mit Escapezeichen maskiert, können Sie dies tun Nutzen Sie diese Funktion. Nur um die Daten in die Datenbank einzufügen, werden keine weiteren Daten eingefügt. Wenn die PHP-Direktive magic_quotes_sybase auf „on“ gesetzt ist, bedeutet dies, dass das Einfügen von „ mit „ maskiert wird.

Frage:
1. Welchen Mechanismus verwendet die Funktion „addsleshes()“, um die Injektion zu verhindern?
Unter welchen Umständen wird „stripslashes()“ verwendet?
3 Wäre es besser, wenn die übermittelten Daten direkt mit htmlspecialchars() maskiert und in der Datenbank gespeichert würden?
4. Was ist der beste Weg, um SQL-Injection zu verhindern?

.

Antwortinhalt:

1. Formulardaten
Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?
zeigt die Formulardaten an

Die erfassten Formulardaten von 2.php
Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?
wurden automatisch hinzugefügt

3.MySQL-Daten (unterste Zeile)
Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?
werden in MySQL geschrieben, aber es gibt kein

4. Ich vermute, dass es von der MySQL-Software ausgeblendet wird:
Was ist der Zweck von addslashes() und wie kann man die MySQL-Injection in PHP verhindern?
Ich habe es auch nicht gesehen

Laut offizieller Stellungnahme
http://www.php.net/manual/zh/function.addslashes.php

Ein Beispiel für die Verwendung von addslashes() ist die Eingabe von Daten in eine Datenbank. Wenn Sie beispielsweise den Namen O'reilly in die Datenbank einfügen möchten, müssen Sie ihn maskieren. Es wird dringend empfohlen, die DBMS-spezifische Escape-Funktion zu verwenden (z. B. mysqli_real_escape_string() für MySQL, pg_escape_string() für PostgreSQL). Wenn das von Ihnen verwendete DBMS jedoch keine Escape-Funktion hat und Sonderzeichen mit Escapezeichen maskiert, können Sie dies tun Nutzen Sie diese Funktion. Nur um die Daten in die Datenbank einzufügen, werden keine weiteren Daten eingefügt. Wenn die PHP-Direktive magic_quotes_sybase auf „on“ gesetzt ist, bedeutet dies, dass das Einfügen von „ mit „ maskiert wird.

Frage:
1. Welchen Mechanismus verwendet die Funktion „addsleshes()“, um die Injektion zu verhindern?
Unter welchen Umständen wird „stripslashes()“ verwendet?
3 Wäre es besser, wenn die übermittelten Daten direkt mit htmlspecialchars() maskiert und in der Datenbank gespeichert würden?
4. Was ist der beste Weg, um SQL-Injection zu verhindern?

.

Wie im Dokument geschrieben, fügt addslashes lediglich einen Schrägstrich vor den Anführungszeichen des Parameters hinzu.
Wie bei den von Ihnen gedruckten Daten steht auch hier ein Schrägstrich vor dem Parameter.
Aber es sollten keine Schrägstriche in der Datenbank vorhanden sein! Wie
addslashes die Injektion verhindert, besteht darin, die direkte Anwendung von Eingabeparametern zu verhindern, wenn wir SQL schreiben, was zur Erzeugung von SQL führt, das injiziert werden kann, um die Injektion zu verhindern.
Zum Beispiel $sql = "SELECT * FROM user WHERE id = '$id'";, wenn der $id-Parameter hier absichtlich in 1' OR '1 = 1' manipuliert wird, wäre es dann nicht eine Injektion von SQL?
Und wenn Sie addslashes mit einem Schrägstrich verwenden, werden die Anführungszeichen in $id übersetzt und das falsche SQL wird nicht generiert. Diese Ergebnisse wirken sich jedoch nicht auf das Schreiben von Daten aus, da diese Schrägstriche zurückübersetzt werden, wenn Daten tatsächlich eingefügt und aktualisiert werden.

SQL-Injection verhindern (Eingabedatenbank):
PDO bindParam oder mysqli_stmt_bind_param: SQL-Injection vermeiden.
Addslashes: Verwenden Sie Backslashes, um alle einfachen Anführungszeichen, doppelten Anführungszeichen, Backslashes und NULs zu maskieren, bis zu einem gewissen Grad, um SQL zu vermeiden Injektion.
mysqli_real_escape_string: Escape-Sonderzeichen in SQL-Anweisungen.
Mit bind_param müssen keine Addslashes, mysqli_real_escape_string, magic_quotes_gpc verwendet werden.
Zum Beispiel:

<code>PDO MySQL:
//方法1(问号占位符)
$stmt = $db->prepare('UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?');
$stmt->execute(array($title,$content,$id)); //所有值视作PDO::PARAM_STR处理

//方法2(命名占位符)
$stmt = $db->prepare('UPDATE posts SET post_title = :title, post_content = :content WHERE id = :id');
$stmt->execute(array(':title' => $title,':content' => $content,':id' => $id)); //所有值视作PDO::PARAM_STR处理

//方法3
$stmt = $db->prepare('UPDATE posts SET post_title = ?, post_content = ? WHERE id = ?');
$stmt->bindParam(1, $title,   PDO::PARAM_STR);
$stmt->bindParam(2, $content, PDO::PARAM_STR);
$stmt->bindParam(3, $id,      PDO::PARAM_INT);
$stmt->execute();

//方法4
$stmt = $db->prepare('UPDATE posts SET post_title = :title, post_content = :content WHERE id = :id');
$stmt->bindParam(':title',   $title,   PDO::PARAM_STR);
$stmt->bindParam(':content', $content, PDO::PARAM_STR);
$stmt->bindParam(':id',      $id,      PDO::PARAM_INT);
$stmt->execute();

MySQLi:
//MySQLi只需执行一次bind_param,要比PDO简洁一些,MySQLi不支持命名占位符.
$stmt->bind_param('ssi', $title, $content, $id);</code>
Nach dem Login kopieren

Die von Ihnen erwähnten htmlspecialchars dienen der Abwehr von XSS-Angriffen bei der Ausgabe von HTML, was sich von der oben erwähnten Verteidigung gegen SQL-Injection unterscheidet

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ßer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Die Zukunft von PHP: Anpassungen und Innovationen Die Zukunft von PHP: Anpassungen und Innovationen Apr 11, 2025 am 12:01 AM

Die Zukunft von PHP wird erreicht, indem sich an neue Technologietrends angepasst und innovative Funktionen eingeführt werden: 1) Anpassung an Cloud Computing, Containerisierung und Microservice -Architekturen, Unterstützung von Docker und Kubernetes; 2) Einführung von JIT -Compilern und Aufzählungsarten zur Verbesserung der Leistung und der Datenverarbeitungseffizienz; 3) die Leistung kontinuierlich optimieren und Best Practices fördern.

PHP vs. Python: Verständnis der Unterschiede PHP vs. Python: Verständnis der Unterschiede Apr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

PHP: Stirbt es oder passt es sich einfach an? PHP: Stirbt es oder passt es sich einfach an? Apr 11, 2025 am 12:13 AM

PHP stirbt nicht, sondern sich ständig anpasst und weiterentwickelt. 1) PHP hat seit 1994 mehreren Versionen für die Version unterzogen, um sich an neue Technologietrends anzupassen. 2) Es wird derzeit in E-Commerce, Content-Management-Systemen und anderen Bereichen häufig verwendet. 3) PHP8 führt den JIT -Compiler und andere Funktionen ein, um die Leistung und Modernisierung zu verbessern. 4) Verwenden Sie Opcache und befolgen Sie die PSR-12-Standards, um die Leistung und die Codequalität zu optimieren.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

PhpMyAdmin Connection MySQL PhpMyAdmin Connection MySQL Apr 10, 2025 pm 10:57 PM

Wie verbinde ich mit PhpMyAdmin mit MySQL? Die URL zum Zugriff auf phpmyadmin ist normalerweise http: // localhost/phpmyadmin oder http: // [Ihre Server -IP -Adresse]/Phpmyadmin. Geben Sie Ihren MySQL -Benutzernamen und Ihr Passwort ein. Wählen Sie die Datenbank aus, mit der Sie eine Verbindung herstellen möchten. Klicken Sie auf die Schaltfläche "Verbindung", um eine Verbindung herzustellen.

See all articles