{"id":7329,"date":"2017-01-27T12:06:38","date_gmt":"2017-01-27T06:36:38","guid":{"rendered":"https:\/\/www.carmatec.com\/?p=7329"},"modified":"2022-08-08T05:08:44","modified_gmt":"2022-08-08T05:08:44","slug":"tips-develop-secured-applications-php","status":"publish","type":"post","link":"https:\/\/www.carmatec.com\/de\/blog\/tipps-zur-entwicklung-gesicherter-php-anwendungen\/","title":{"rendered":"Tipps zum Entwickeln sicherer Anwendungen in PHP"},"content":{"rendered":"
PHP ist eine der beliebtesten Programmiersprachen f\u00fcr das Web. Es hilft den Entwicklern, die besten Anwendungen zu programmieren und neue Ma\u00dfst\u00e4be in der Mobil- und Webentwicklung zu setzen. Die gr\u00f6\u00dfte Sorge bei der Entwicklung einer PHP-Anwendung ist jedoch die Sicherheit, was die Entwicklung gesicherter PHP-Anwendungen insbesondere f\u00fcr Amateure zu einer gro\u00dfen Herausforderung macht. In diesem Artikel stellen wir Ihnen drei wichtige Tipps zur Verf\u00fcgung, die Ihnen dabei helfen, einige h\u00e4ufige Fehler bei der PHP-Sicherheit und -Entwicklung zu vermeiden.<\/p>\n
Die Meldung von Anwendungsfehlern ist w\u00e4hrend des Entwicklungsprozesses sehr hilfreich. Mithilfe von Fehlerberichten k\u00f6nnen Sie nicht nur Rechtschreibfehler in den Variablen finden, sondern auch fehlerhafte Funktionsverwendungen erkennen.<\/p>\n
Sobald die Website jedoch online geht, k\u00f6nnen dieselben Berichte, die Ihnen bei der Entwicklung geholfen haben, sich negativ auf die Sicherheit Ihrer Anwendung auswirken, indem sie den Benutzern viel mehr \u00fcber Ihre Website erz\u00e4hlen, als Sie ihnen vielleicht mitteilen m\u00f6chten (z. B. Informationen zur Software). ausgef\u00fchrt 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.<\/p>\n
Sollten weiterhin Fehler auftreten, haben wir weiterhin das Bed\u00fcrfnis, dar\u00fcber auf dem Laufenden zu bleiben. Daher m\u00fcssen wir sicherstellen, dass alle unsere Fehler in einer gesch\u00fctzten Datei protokolliert werden, was mit einer PHP-Funktion namens set_error_handler erfolgen kann.<\/p>\n
Seit den Anf\u00e4ngen von PHP haben die PHP-Designer regelm\u00e4\u00dfig einige Funktionen integriert, die die Entwicklung erleichtern sollten. Zumindest dachten sie daran, es so zu machen! Einige dieser vermeintlich hilfreichen Funktionen k\u00f6nnten sich auch als unerw\u00fcnschte Folgen herausstellen. Wir bezeichnen diese als \u201eschlechte Funktionen\u201c, da sie eine Datenvalidierung erm\u00f6glichen und einen Weg f\u00fcr Fehler geschaffen haben, ihren Weg in Skripte zu finden. Aus diesem Grund empfehlen wir Ihnen, einige dieser Funktionen als eine der ersten Ma\u00dfnahmen zu Beginn des Entwicklungsprozesses zu deaktivieren.<\/p>\n
Hinweis: Diese Funktionen k\u00f6nnen je nach Host f\u00fcr Ihre Website deaktiviert sein oder auch nicht. Wenn Sie auf Ihrem eigenen Computer oder einer \u00e4hnlichen 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\u00dflich nicht mehr unterst\u00fctzt.<\/p>\n
Globals registrieren (register_globals)<\/code><\/pre>\n'register_globals'<\/strong> war im Grunde dazu gedacht, die schnelle Anwendungsentwicklung mit einer Abfragezeichenfolge zu unterst\u00fctzen. Der 'register_globals'<\/strong> Mit der Anweisung k\u00f6nnen wir auf den Wert zugreifen $var<\/strong> anstatt $_GET['var']<\/strong> automatisch. F\u00fcr uns h\u00f6rt sich das vielleicht n\u00fctzlich 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\u00fcnschten Folgen bieten. Der folgende Codeausschnitt ist nur ein h\u00e4ufiges Beispiel, das wir in PHP-Skripten sehen werden:<\/p>\nif( !empty( $_POST['username'] ) && $_POST['username'] == 'test' && !empty( $_POST['password'] ) && $_POST['password'] == \u201etest123\u201c )
\n{
\n$access = true;
\n}<\/p>\n
Wenn die Anwendung mit aktiviertem Register_Globals ausgef\u00fchrt wird, k\u00f6nnte ein Benutzer einfach access=1 in eine Abfragezeichenfolge einf\u00fcgen und h\u00e4tte dann Zugriff auf alles, was das Skript ausf\u00fchrt. Es ist zwar nicht m\u00f6glich, Register_Globals von der Skriptseite aus zu deaktivieren (mithilfe von ini_set, wie im Normalfall), jedoch kann hierf\u00fcr eine .htaccess-Datei verwendet werden. Abgesehen davon erlauben uns einige Hosts, zu diesem Zweck auch eine php.ini-Datei auf dem Server zu haben.<\/p>\n
Deaktivieren mit .htaccess<\/strong><\/p>\nphp_flag register_globals 0<\/code><\/pre>\nDeaktivieren mit php.ini<\/strong><\/p>\nregister_globals = Aus<\/code><\/pre>\nEs 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\u00fcssen, dass diese Deklarationen in jeden Unterordner mit PHP aufgenommen werden.<\/p>\n
Tipp 3: Behalten Sie die Cross Site Scripting (XSS)-Angriffe in Benutzereingaben im Auge<\/h3>\n
Eine Webanwendung nimmt im Allgemeinen Eingaben von den Benutzern entgegen, um diese schlie\u00dflich in der einen oder anderen Form anzuzeigen. Dabei kann es sich um eine beliebige Form handeln, einschlie\u00dflich Kommentaren, Blogbeitr\u00e4gen oder Threads, die alle grunds\u00e4tzlich in Form von HTML-Code vorliegen. Es ist jedoch zu beachten, dass es f\u00fcr Ihre Anwendung riskant sein kann, HTML zum Zeitpunkt der Annahme von Eingaben zuzulassen, da dadurch ausreichend Platz f\u00fcr die Ausf\u00fchrung von JavaScript auf eine der vielen unerwarteten Arten bleibt. Und dadurch k\u00f6nnen die Cookies sogar leicht gekapert werden, wenn selbst etwas wirklich Kleines unbeaufsichtigt bleibt. Die Entf\u00fchrer k\u00f6nnen diese Cookie-Daten dann leicht verwenden, um ein echtes Konto vorzut\u00e4uschen und sich illegalen Zugriff auf die Daten Ihrer Website zu verschaffen. Sie k\u00f6nnen Ihre Website vor solchen Angriffen sch\u00fctzen, indem Sie HTML ganz verbieten, was letztendlich auch die Ausf\u00fchrung von JavaScript verhindert. Dies ist jedoch m\u00f6glicherweise nicht immer eine praktikable Option, da dadurch auch die Formatierung vollst\u00e4ndig deaktiviert wird, auf die m\u00f6glicherweise nicht verzichtet werden kann, insbesondere im Fall eines Blogs oder eines Forums.<\/p>\n
Um dieses Problem zu beheben, k\u00f6nnen Sie HTML weitgehend deaktivieren, mit Ausnahme einiger einfacher Formatierungen. Dies kann erreicht werden, indem nur einige ausgew\u00e4hlte HTML-Tags (ohne Attribute) zugelassen werden, beispielsweise das \u201estrong\u201c-Tag oder das \u201eem\u201c-Tag. Oder einfach ein paar beliebte Tags wie \u201eBBCode\u201c oder \u201eBB Tags\u201c, die in Foren h\u00e4ufig 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\u00e4ren Ausdr\u00fccken und einer Reihe von \u201epreg_replace\u201c-Anweisungen implementiert werden.<\/p>\n
Referenz: http:\/\/www.sks.com.np\/basic-security-vulnerabilities-in-php-code\/<\/a><\/p>\nAls F\u00fchrender PHP-Entwicklungsunternehmen<\/a> , Carmatec<\/a> bietet End-to-End PHP-Entwicklung<\/a> L\u00f6sungen, die auf modernster Technologie basieren, sowohl im Front-End als auch im Backend. Neben zeitgem\u00e4\u00dfem Stil und Design arbeiten wir daran, die Benutzeroberfl\u00e4chen einfach und benutzerfreundlich zu halten. Auch bei komplexen Website-Funktionalit\u00e4ten ist die Benutzerfreundlichkeit unser Ziel.<\/p>","protected":false},"excerpt":{"rendered":"PHP is one of the most popular programming languages for the web. It helps the developers program the finest of applications and create new benchmarks in mobile and web development. However, the biggest concern with developing a PHP application is that of security, making the development of secured PHP applications a major challenge, specially, for […]<\/p>","protected":false},"author":1,"featured_media":29490,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,19],"tags":[],"class_list":["post-7329","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","category-php-development"],"_links":{"self":[{"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/posts\/7329","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/comments?post=7329"}],"version-history":[{"count":1,"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/posts\/7329\/revisions"}],"predecessor-version":[{"id":29491,"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/posts\/7329\/revisions\/29491"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/media\/29490"}],"wp:attachment":[{"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/media?parent=7329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/categories?post=7329"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.carmatec.com\/de\/wp-json\/wp\/v2\/tags?post=7329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}