Heim  >  Artikel  >  Backend-Entwicklung  >  Einige Ratschläge zur sicheren Programmierung in PHP

Einige Ratschläge zur sicheren Programmierung in PHP

王林
王林nach vorne
2019-08-20 10:27:221728Durchsuche

Einführung

Um Internetdienste bereitzustellen, müssen Sie bei der Entwicklung von Code stets das Sicherheitsbewusstsein wahren. Es ist möglich, dass sich die meisten PHP-Skripte nicht um Sicherheitsprobleme kümmern, vor allem weil es so viele unerfahrene Programmierer gibt, die die Sprache verwenden. Es gibt jedoch keinen Grund, warum Sie aufgrund der Unsicherheit über Ihren Code inkonsistente Sicherheitsrichtlinien haben sollten. Wenn Sie etwas, bei dem es um Geld geht, auf einen Server legen, besteht die Möglichkeit, dass jemand versucht, ihn zu hacken. Erstellen Sie ein Forenprogramm oder eine beliebige Art von Warenkorb, und die Möglichkeit, angegriffen zu werden, steigt ins Unendliche.

Empfohlenes PHP-Video-Tutorial: https://www.php.cn/course/list/29/type/2.html

Hintergrund

Um die Sicherheit Ihrer Webinhalte zu gewährleisten, finden Sie hier einige allgemeine Sicherheitsrichtlinien:

1. Vertrauen Sie keinen Formularangriffen Das Formular ist einfach. Mithilfe eines einfachen JavaScript-Tricks können Sie Ihr Formular so einschränken, dass im Bewertungsfeld nur Zahlen von 1 bis 5 zulässig sind. Wenn jemand die JavaScript-Funktionalität seines Browsers deaktiviert oder benutzerdefinierte Formulardaten übermittelt, schlägt Ihre clientseitige Validierung fehl.
Benutzer interagieren mit Ihrem Skript hauptsächlich über Formularparameter, daher stellen sie das größte Sicherheitsrisiko dar. Was solltest du lernen? Validieren Sie in PHP-Skripten immer die an jedes PHP-Skript übergebenen Daten. In diesem Artikel zeigen wir Ihnen, wie Sie Cross-Site-Scripting-Angriffe (XSS) analysieren und sich davor schützen können, die Benutzeranmeldeinformationen kapern können (oder noch schlimmere Folgen haben). Außerdem erfahren Sie, wie Sie MySQL-Injection-Angriffe verhindern, die Ihre Daten beeinträchtigen oder zerstören können.

2. Vertrauen Sie Benutzern nicht

Gehen Sie davon aus, dass alle Daten, die Ihre Website erhält, voller schädlichem Code sind. Bereinigen Sie jeden Teil, auch wenn Sie glauben, dass niemand versuchen wird, Ihre Website zu hacken.

3. Deaktivieren Sie globale Variablen

Die größte Sicherheitslücke, die Sie möglicherweise haben, ist die Aktivierung des Konfigurationsparameters

. Glücklicherweise deaktivieren PHP 4.2 und höher diese Konfiguration standardmäßig. Wenn

aktiviert ist, können Sie diese Funktion deaktivieren, indem Sie die Variable

in Ihrer php.ini-Datei auf „Aus“ ändern:

register_globals = Off
register_globalsAnfänger finden es bequem, globale Variablen zu registrieren, tun dies jedoch nicht Ich weiß nicht, wie gefährlich dieses Setup sein kann. Ein Server mit aktivierten globalen Variablen weist der globalen Variablen automatisch jede Art von Parameter zu. Um zu verstehen, wie es funktioniert und warum es gefährlich ist, schauen wir uns ein Beispiel an. register_globalsregister_globalsAngenommen, Sie haben ein Skript namens

, das Formulardaten in Ihre Datenbank einfügt. Das anfängliche Formular sieht so aus:

<input name="username" type="text" size="15" maxlength="64">

Beim Ausführen von

weist PHP mit aktivierter globaler Variablenregistrierung den Parameter der Variablen process.php zu. Dadurch werden Tastenanschläge im Vergleich zum Zugriff über

oder

eingespart. Leider stellt dies auch ein Sicherheitsproblem dar, da PHP den Wert der Variablen auf den Wert setzt, der über GET- oder POST-Parameter an das Skript gesendet wird, wenn Sie die Variable nicht explizit initialisieren und nicht möchten, dass jemand dies tut Es wird ein großes Problem sein, es zu bedienen. process.php $usernameSehen Sie sich das Skript unten an. Wenn der Wert der Variable $_POST['username'] wahr ist, werden dem Benutzer die überprüften Daten angezeigt. Normalerweise wird der Wert der Variablen $_GET['username'] nur dann auf „true“ gesetzt, wenn der Benutzer die hypothetische Funktionsüberprüfung

korrekt besteht. Wenn Sie jedoch

aktivieren, kann jeder einen GET-Parameter wie $authorized senden, um ihn zu überschreiben: authenticated_user()

<?php
// Define $authorized = true only if user is authenticated
if (authenticated_user()) {
    $authorized = true;
}
?>

这个故事的寓意是,你应该从预定义的服务器变量中获取表单数据。所有通过 post 表单传递到你 web 页面的数据都会自动保存到一个称为 $_POST 的大数组中,所有的 GET 数据都保存在 $_GET 大数组中。文件上传信息保存在一个称为 $_FILES 的特殊数据中。另外,还有一个称为 $_REQUEST 的复合变量。

要从一个 POST 方法表单中访问username字段,可以使用 $_POST['username']。如果 username 在 URL 中就使用$_GET['username']。如果你不确定值来自哪里,用 $_REQUEST['username']

<?php
$post_value = $_POST[&#39;post_value&#39;];
$get_value = $_GET[&#39;get_value&#39;];
$some_variable = $_REQUEST[&#39;some_value&#39;]; 
?>

$_REQUEST $_GET$_POST、和 $_COOKIE 数组的结合。如果你有两个或多个值有相同的参数名称,注意 PHP 会使用哪个。默认的顺序是 cookiePOST、然后是 GET

以上就是为大家整理的一些编程安全建议。更过相关问题请访问PHP中文网:https://www.php.cn/

Das obige ist der detaillierte Inhalt vonEinige Ratschläge zur sicheren Programmierung in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:开发者头条. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen