Heim > Artikel > Backend-Entwicklung > Einige Ratschläge zur sicheren Programmierung in PHP
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. Wennaktiviert ist, können Sie diese Funktion deaktivieren, indem Sie die Variable
in Ihrer php.ini-Datei auf „Aus“ ändern:register_globals = Off
register_globals
Anfä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_globals
register_globals
Angenommen, 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
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
$username
Sehen 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
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['post_value']; $get_value = $_GET['get_value']; $some_variable = $_REQUEST['some_value']; ?>
$_REQUEST
是 $_GET
、$_POST
、和 $_COOKIE
数组的结合。如果你有两个或多个值有相同的参数名称,注意 PHP 会使用哪个。默认的顺序是 cookie
、POST
、然后是 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!