Tipps zum Entwickeln sicherer Anwendungen in PHP

27. Januar 2017

PHP ist eine der beliebtesten Programmiersprachen für das Web. Es hilft den Entwicklern, die besten Anwendungen zu programmieren und neue Maßstäbe in der Mobil- und Webentwicklung zu setzen. Die größte Sorge bei der Entwicklung einer PHP-Anwendung ist jedoch die Sicherheit, was die Entwicklung gesicherter PHP-Anwendungen insbesondere für Amateure zu einer großen Herausforderung macht. In diesem Artikel stellen wir Ihnen drei wichtige Tipps zur Verfügung, die Ihnen dabei helfen, einige häufige Fehler bei der PHP-Sicherheit und -Entwicklung zu vermeiden.

Tipp 1: Eine entsprechende Fehlerberichterstattung ist ein Muss

Die Meldung von Anwendungsfehlern ist während des Entwicklungsprozesses sehr hilfreich. Mithilfe von Fehlerberichten können Sie nicht nur Rechtschreibfehler in den Variablen finden, sondern auch fehlerhafte Funktionsverwendungen erkennen.

Sobald die Website jedoch online geht, können dieselben Berichte, die Ihnen bei der Entwicklung geholfen haben, sich negativ auf die Sicherheit Ihrer Anwendung auswirken, indem sie den Benutzern viel mehr über Ihre Website erzählen, als Sie ihnen vielleicht mitteilen möchten (z. B. Informationen zur Software). ausgeführt werden, die Ordnerstruktur usw.). Bevor die Website online geht, sollten Sie sicherstellen, dass alle derartigen Fehler beseitigt werden, um solche sensiblen Informationen geheim zu halten. Dies kann durch das Schreiben der folgenden Zeilen in unsere Bewerbungen erfolgen.

error_reporting(0);

Sollten weiterhin Fehler auftreten, haben wir weiterhin das Bedürfnis, darüber auf dem Laufenden zu bleiben. Daher müssen wir sicherstellen, dass alle unsere Fehler in einer geschützten Datei protokolliert werden, was mit einer PHP-Funktion namens set_error_handler erfolgen kann.

Tipp 2: Es empfiehlt sich, nicht mehr genutzte PHP-Funktionen zu deaktivieren

Seit den Anfängen von PHP haben die PHP-Designer regelmäßig einige Funktionen integriert, die die Entwicklung erleichtern sollten. Zumindest dachten sie daran, es so zu machen! Einige dieser vermeintlich hilfreichen Funktionen könnten sich auch als unerwünschte Folgen herausstellen. Wir bezeichnen diese als „schlechte Funktionen“, da sie eine Datenvalidierung ermöglichen und einen Weg für Fehler geschaffen haben, ihren Weg in Skripte zu finden. Aus diesem Grund empfehlen wir Ihnen, einige dieser Funktionen als eine der ersten Maßnahmen zu Beginn des Entwicklungsprozesses zu deaktivieren.

Hinweis: Diese Funktionen können je nach Host für Ihre Website deaktiviert sein oder auch nicht. Wenn Sie auf Ihrem eigenen Computer oder einer ähnlichen lokalen Umgebung entwickeln, werden diese wahrscheinlich nicht deaktiviert. Einige dieser Funktionen wurden in PHP6 entfernt, sind jedoch in PHP4-Anwendungen weiterhin vorhanden und werden ab den PHP5-Anwendungen schließlich nicht mehr unterstützt.

Globals registrieren (register_globals)

'register_globals' war im Grunde dazu gedacht, die schnelle Anwendungsentwicklung mit einer Abfragezeichenfolge zu unterstützen. Der 'register_globals' Mit der Anweisung können wir auf den Wert zugreifen $var anstatt $_GET['var'] automatisch. Für uns hört sich das vielleicht nützlich an, aber leider enthalten jetzt alle Variablen im Code diese Eigenschaft, sodass es jetzt einfacher ist, in PHP-Anwendungen einzudringen, die keinen Schutz vor solchen unerwünschten Folgen bieten. Der folgende Codeausschnitt ist nur ein häufiges Beispiel, das wir in PHP-Skripten sehen werden:

if( !empty( $_POST['username'] ) && $_POST['username'] == 'test' && !empty( $_POST['password'] ) && $_POST['password'] == „test123“ )
{
$access = true;
}

Wenn die Anwendung mit aktiviertem Register_Globals ausgeführt wird, könnte ein Benutzer einfach access=1 in eine Abfragezeichenfolge einfügen und hätte dann Zugriff auf alles, was das Skript ausführt. Es ist zwar nicht möglich, Register_Globals von der Skriptseite aus zu deaktivieren (mithilfe von ini_set, wie im Normalfall), jedoch kann hierfür eine .htaccess-Datei verwendet werden. Abgesehen davon erlauben uns einige Hosts, zu diesem Zweck auch eine php.ini-Datei auf dem Server zu haben.

Deaktivieren mit .htaccess

php_flag register_globals 0

Deaktivieren mit php.ini

register_globals = Aus

Es ist zu beachten, dass wir, wenn wir planen, eine benutzerdefinierte php.ini-Datei zu verwenden, die nicht auf den gesamten Server anwendbar ist, sicherstellen müssen, dass diese Deklarationen in jeden Unterordner mit PHP aufgenommen werden.

Tipp 3: Behalten Sie die Cross Site Scripting (XSS)-Angriffe in Benutzereingaben im Auge

Eine Webanwendung nimmt im Allgemeinen Eingaben von den Benutzern entgegen, um diese schließlich in der einen oder anderen Form anzuzeigen. Dabei kann es sich um eine beliebige Form handeln, einschließlich Kommentaren, Blogbeiträgen oder Threads, die alle grundsätzlich in Form von HTML-Code vorliegen. Es ist jedoch zu beachten, dass es für Ihre Anwendung riskant sein kann, HTML zum Zeitpunkt der Annahme von Eingaben zuzulassen, da dadurch ausreichend Platz für die Ausführung von JavaScript auf eine der vielen unerwarteten Arten bleibt. Und dadurch können die Cookies sogar leicht gekapert werden, wenn selbst etwas wirklich Kleines unbeaufsichtigt bleibt. Die Entführer können diese Cookie-Daten dann leicht verwenden, um ein echtes Konto vorzutäuschen und sich illegalen Zugriff auf die Daten Ihrer Website zu verschaffen. Sie können Ihre Website vor solchen Angriffen schützen, indem Sie HTML ganz verbieten, was letztendlich auch die Ausführung von JavaScript verhindert. Dies ist jedoch möglicherweise nicht immer eine praktikable Option, da dadurch auch die Formatierung vollständig deaktiviert wird, auf die möglicherweise nicht verzichtet werden kann, insbesondere im Fall eines Blogs oder eines Forums.

Um dieses Problem zu beheben, können Sie HTML weitgehend deaktivieren, mit Ausnahme einiger einfacher Formatierungen. Dies kann erreicht werden, indem nur einige ausgewählte HTML-Tags (ohne Attribute) zugelassen werden, beispielsweise das „strong“-Tag oder das „em“-Tag. Oder einfach ein paar beliebte Tags wie „BBCode“ oder „BB Tags“, die in Foren häufig im Format [b]test[/b] geschrieben werden. Der BBCode kann auch mithilfe bereits vorhandener Pakete wie HTML_BBCodeParser oder durch das Schreiben unserer eigenen BBCode-Implementierung mit regulären Ausdrücken und einer Reihe von „preg_replace“-Anweisungen implementiert werden.

Referenz: http://www.sks.com.np/basic-security-vulnerabilities-in-php-code/

Als Führender PHP-Entwicklungsunternehmen , Carmatec bietet End-to-End PHP-Entwicklung Lösungen, die auf modernster Technologie basieren, sowohl im Front-End als auch im Backend. Neben zeitgemäßem Stil und Design arbeiten wir daran, die Benutzeroberflächen einfach und benutzerfreundlich zu halten. Auch bei komplexen Website-Funktionalitäten ist die Benutzerfreundlichkeit unser Ziel.

de_DEGerman