suchen
HeimBackend-EntwicklungPHP-TutorialHäufige PHP-Sicherheitsangriffe und -Lösungen

Häufige PHP-Sicherheitsangriffe und -Lösungen

Mar 13, 2018 am 11:42 AM
phpWeg安全性

In diesem Artikel werden hauptsächlich häufige PHP-Sicherheitsangriffe und -Lösungen vorgestellt. Wenn Sie die häufigen Sicherheitsbedrohungen für PHP-Anwendungen verstehen, können Sie sicherstellen, dass Ihre PHP-Anwendung nicht angegriffen wird. Daher werden in diesem Artikel 6 häufige PHP-Sicherheitsangriffe aufgeführt. Jeder ist herzlich eingeladen, ihn zu lesen und zu lernen.

1. SQL-Injection

SQL-Injection ist ein böswilliger Angriff, bei dem Benutzer SQL-Anweisungen in Formularfelder eingeben, um die normale SQL-Ausführung zu beeinträchtigen. Es gibt auch eine Möglichkeit, die über den Befehl system() oder exec() injiziert wird und über denselben SQL-Injection-Mechanismus verfügt, aber nur auf Shell-Befehle abzielt.

01    $username = $_POST[&#39;username&#39;];02    $query = "select * from auth where username = &#39;".$username."&#39;";03    echo $query;04    $db = new mysqli(&#39;localhost&#39;, &#39;demo&#39;, ‘demo&#39;, ‘demodemo&#39;);05    $result = $db->query($query);06    if ($result && $result->num_rows) {07        echo "<br />Logged in successfully";08    } else {09        echo "<br />Login failed";10    }

Der obige Code filtert oder maskiert den vom Benutzer eingegebenen Wert ($_POST['username']) in der ersten Zeile nicht. Daher kann die Abfrage fehlschlagen oder sogar die Datenbank beschädigen, je nachdem, ob $username Ihre SQL-Anweisung in etwas anderes umwandelt.

SQL-Injection verhindern

Optionen:

使用mysql_real_escape_string()过滤数据
手动检查每一数据是否为正确的数据类型
使用预处理语句并绑定变量

Vorbereitete Anweisungen verwenden

分离数据和SQL逻辑
预处理语句将自动过滤(如:转义)
把它作为一个编码规范,可以帮助团队里的新人避免遇到以上问题
01    $query = 'select name, district from city where countrycode=?';02    if ($stmt = $db->prepare($query) )03    {04        $countrycode = 'hk';05        $stmt->bind_param("s", $countrycode); 
06        $stmt->execute();07        $stmt->bind_result($name, $district);08        while ( $stmt ($stmt->fetch() ){09            echo $name.', '.$district;10            echo '<br>';11        }12        $stmt->close();13    }

2. XSS-Angriff

XSS (Cross-Site Scripting) ist ein Angriff, bei dem der Benutzer einige Daten in Ihre Website eingibt, einschließlich clientseitigem Skript (normalerweise JavaScript). Wenn Sie Daten ohne Filterung auf eine andere Webseite ausgeben, wird dieses Skript ausgeführt.

Vom Benutzer übermittelte Textinhalte erhalten

01    <?php02    if (file_exists(&#39;comments&#39;)) {03        $comments = get_saved_contents_from_file(&#39;comments&#39;);04    } else {05        $comments = &#39;&#39;;06    }07     08    if (isset($_POST[&#39;comment&#39;])) {09        $comments .= &#39;<br />&#39; . $_POST[&#39;comment&#39;];10        save_contents_to_file(&#39;comments&#39;, $comments);11    }12    >
输出内容给(另一个)用户1    <form action=&#39;xss.php&#39; method=&#39;POST&#39;>2    Enter your comments here: <br />3    <textarea name=&#39;comment&#39;></textarea> <br />4    <input type=&#39;submit&#39; value=&#39;Post comment&#39; />5    </form><hr /><br />6     7    <?php echo $comments; ?>

Was wird passieren?

烦人的弹窗
刷新或重定向
损坏网页或表单
窃取cookie
AJAX(XMLHttpRequest)

XSS-Angriffe verhindern: Um XSS-Angriffe zu verhindern, verwenden Sie die PHP-Funktion htmlentities() zum Filtern und anschließenden Ausgeben an den Browser. Die grundlegende Verwendung von htmlentities() ist einfach, es stehen jedoch viele erweiterte Steuerelemente zur Verfügung, siehe XSS-Spickzettel.

3. Sitzungsfixierung

Sitzungssicherheit, vorausgesetzt, eine PHPSESSID ist schwer zu erraten. PHP kann jedoch eine Sitzungs-ID über ein Cookie oder eine URL akzeptieren. Daher kann das Spoofing eines Opfers mithilfe einer bestimmten (oder einer anderen) Sitzungs-ID oder eines Phishing-Angriffs erfolgen.

4. Sitzungserfassung und -hijacking

Dies ist die gleiche Idee wie die Sitzungsfixierung, beinhaltet jedoch den Diebstahl der Sitzungs-ID. Wenn die Sitzungs-ID in einem Cookie gespeichert ist, kann sie von einem Angreifer über XSS und JavaScript gestohlen werden. Wenn die Sitzungs-ID in der URL enthalten ist, kann diese auch durch Sniffing oder vom Proxyserver ermittelt werden.

Sitzungserfassung und -hijacking verhindern

更新ID
如果使用会话,请确保用户使用SSL

5. Cross-Site Request Forgery (CSRF)

Ein CSRF-Angriff bezieht sich auf eine Anfrage, die von einer Seite gestellt wird, die so aussieht Seien Sie ein vertrauensvoller Benutzer der Website, aber nicht absichtlich. Es gibt viele Variationen davon, wie dieses Beispiel:

1    ![](http://example.com/single_click_to_buy.php?user_id=123&item=12345)

Verhindern von Cross-Site-Request-Forgery

Stellen Sie im Allgemeinen sicher, dass der Benutzer aus Ihrem Formular stammt, und passen Sie jedes Formular an, das Sie senden Form aus. Es gibt zwei Punkte, die beachtet werden müssen:

对用户会话采用适当的安全措施,例如:给每一个会话更新id和用户使用SSL。
生成另一个一次性的令牌并将其嵌入表单,保存在会话中(一个会话变量),在提交时检查它。

6. Code-Injection

Code-Injection wird durch die Ausnutzung von Computerschwachstellen durch die Verarbeitung ungültiger Daten verursacht. Das Problem tritt auf, wenn Sie versehentlich beliebigen Code ausführen, normalerweise über die Dateieinbindung. Schlecht geschriebener Code kann dazu führen, dass eine Remote-Datei eingebunden und ausgeführt wird. Wie viele PHP-Funktionen kann require eine URL oder einen Dateinamen enthalten, zum Beispiel:

01    <form>Choose theme:02        <select name = theme>03            <option value = blue>Blue</option>04            <option value = green>Green</option>05            <option value = red>Red</option>06        </select>07        <input type = submit>08    </form>09    <?php10        if($theme) {11            require($theme.&#39;.txt&#39;);12        }13    ?>

Im obigen Beispiel wird durch Übergabe eines Dateinamens oder eines Teils eines vom Benutzer eingegebenen Dateinamens Es enthält die URL, die mit „http“ beginnt, Dateien, die mit „://“ beginnen.

Code-Injection verhindern

过滤用户输入
在php.ini中设置禁用allow_url_fopen和allow_url_include。这将禁用require/include/fopen的远程文件。

Andere allgemeine Grundsätze

  1. Verlassen Sie sich nicht auf die Serverkonfiguration, um Ihre Anwendung zu schützen, insbesondere wenn Ihr Web Server/PHP wird von Ihrem ISP verwaltet oder kann in Zukunft an einen anderen Ort verschoben/bereitgestellt werden, wenn Ihre Website an einen anderen Ort verschoben/bereitgestellt wird. Bitte betten Sie sicherheitsrelevante Prüfungen/Logik in Ihren Website-Code ein (HTML, JavaScript, PHP usw.).

  2. Entwerfen Sie serverseitige Sicherheitsskripte:
    – verwenden Sie beispielsweise eine einzige Ausführungszeile – einen einzigen Punkt für Authentifizierung und Datenbereinigung
    – betten Sie beispielsweise ein PHP ein auf allen sicherheitsrelevanten Seiten Funktion/Datei, die alle Login-/Sicherheitslogikprüfungen übernimmt

  3. Stellen Sie sicher, dass Ihr Code auf dem neuesten Stand ist und gepatcht ist.

Verwandte Empfehlungen:

Detaillierte Erklärung von PHP-Sicherheitsbeispielen

Bilder sicher mit PHP hochladen

Detaillierte Zusammenfassung der PHP-Sicherheitskonfigurationsdatensätze und häufiger Fehler

Das obige ist der detaillierte Inhalt vonHäufige PHP-Sicherheitsangriffe und -Lösungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Erläutern Sie das Konzept einer PHP -Sitzung in einfachen Worten.Erläutern Sie das Konzept einer PHP -Sitzung in einfachen Worten.Apr 26, 2025 am 12:09 AM

PhpSessionStrackUserDataacrossMultiplePageRequestsusesuseiquiTIdStoredInacookie.her'ShowtomagetheFectiv: 1) StartaSessionswithSession_start () und storateatain $ _Session.2) regeneratethessionSessionInoginWithSession_IDENT_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTE_IDENTEL

Wie schleifen Sie alle in einer PHP -Sitzung gespeicherten Werte durch?Wie schleifen Sie alle in einer PHP -Sitzung gespeicherten Werte durch?Apr 26, 2025 am 12:06 AM

In PHP können durch Sitzungsdaten in den folgenden Schritten iteriert werden: 1. Starten Sie die Sitzung mit Session_Start (). 2. Iterieren Sie durch die Foreach-Schleife durch alle Schlüsselwertpaare im $ _Session-Array. 3. Wenn Sie komplexe Datenstrukturen verarbeiten, verwenden Sie is_array () oder is_object () Funktionen und verwenden Sie print_r (), um detaillierte Informationen auszugeben. 4. Bei der Optimierung von Traversal kann Paging verwendet werden, um eine gleichzeitige Verarbeitung großer Datenmengen zu vermeiden. Auf diese Weise können Sie PHP -Sitzungsdaten in Ihrem tatsächlichen Projekt effizienter verwalten und verwenden.

Erklären Sie, wie Sie Sitzungen für die Benutzerauthentifizierung verwenden.Erklären Sie, wie Sie Sitzungen für die Benutzerauthentifizierung verwenden.Apr 26, 2025 am 12:04 AM

Die Sitzung realisiert die Benutzerauthentifizierung über den serverseitigen Statusverwaltungsmechanismus. 1) Erstellung der Sitzung und Erzeugung eindeutiger IDs, 2) IDs werden durch Cookies weitergeleitet, 3) Server speichert und greift auf Sitzungsdaten über IDs, 4) Benutzerauthentifizierung und Statusverwaltung zugeordnet und verbessert die Sicherheit und die Benutzererfahrung von Anwendungen.

Geben Sie ein Beispiel dafür, wie Sie den Namen eines Benutzers in einer PHP -Sitzung speichern.Geben Sie ein Beispiel dafür, wie Sie den Namen eines Benutzers in einer PHP -Sitzung speichern.Apr 26, 2025 am 12:03 AM

TostoreaussersnameInaphpSession, startTheSessionwithSession_Start (), thenAnthenameto $ _Session ['Benutzername']

Was sind einige häufige Probleme, die dazu führen können, dass PHP -Sitzungen scheitern?Was sind einige häufige Probleme, die dazu führen können, dass PHP -Sitzungen scheitern?Apr 25, 2025 am 12:16 AM

Gründe für einen Phpessionsfehler sind Konfigurationsfehler, Cookie -Probleme und Sitzungsablauf. 1. Konfigurationsfehler: Überprüfen Sie die richtige Sitzung und setzen Sie die korrekte Sitzung. 2. Kookie -Problem: Stellen Sie sicher, dass der Cookie korrekt eingestellt ist. 3.Sesion läuft ab: Passen Sie die Sitzung an.

Wie debuggen Sie Probleme im Zusammenhang mit Sitzungen in PHP?Wie debuggen Sie Probleme im Zusammenhang mit Sitzungen in PHP?Apr 25, 2025 am 12:12 AM

Zu den Methoden zur Debugg -Sitzungsprobleme in PHP gehören: 1. Überprüfen Sie, ob die Sitzung korrekt gestartet wird. 2. Überprüfen Sie die Lieferung der Sitzungs -ID; 3. Überprüfen Sie den Speicher und das Lesen von Sitzungsdaten. 4. Überprüfen Sie die Serverkonfiguration. Durch Ausgabe von Sitzungs-ID und Daten, Anzeigen von Sitzungsdateiinhalten usw. können Sie effektiv Diagnose und Lösen von Sitzungen im Zusammenhang mit Sitzungen diagnostizieren und lösen.

Was passiert, wenn Session_Start () mehrmals aufgerufen wird?Was passiert, wenn Session_Start () mehrmals aufgerufen wird?Apr 25, 2025 am 12:06 AM

Mehrere Anrufe bei Session_Start () führen zu Warnmeldungen und möglichen Datenüberschreibungen. 1) PHP wird eine Warnung ausstellen und veranlassen, dass die Sitzung gestartet wurde. 2) Dies kann zu unerwarteten Überschreibungen von Sitzungsdaten führen. 3) Verwenden Sie Session_Status (), um den Sitzungsstatus zu überprüfen, um wiederholte Anrufe zu vermeiden.

Wie konfigurieren Sie die Sitzungslebensdauer in PHP?Wie konfigurieren Sie die Sitzungslebensdauer in PHP?Apr 25, 2025 am 12:05 AM

Das Konfigurieren des Sitzungslebenszyklus in PHP kann durch Einstellen von Sitzungen erreicht werden. 1) Session.gc_maxLifetime steuert die Überlebenszeit der serverseitigen Sitzungsdaten, 2) Sitzung.cookie_Lifetime steuert den Lebenszyklus von Client-Cookies. Wenn der Keks auf 0 eingestellt ist, läuft es, wenn der Browser geschlossen ist.

See all articles

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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft