Ultimative Best Practices für PHP-Sicherheit
Da PHP das Rückgrat für fast jede Website ist, sollte die PHP-Sicherheit daher nicht um jeden Preis als vernachlässigbar angesehen werden. PHP-Entwickler haben jedoch das Privileg, häufige Bedrohungen wie Cross-Site Request Forgery, SQL-Injections und Datenmanipulation zu vermeiden. Und all dies ist mit Hilfe der in PHP integrierten Sicherheitsfunktionen praktisch, die es Entwicklern erleichtern, die Website zu schützen.
PHP gilt als die leistungsfähigste serverseitige Sprache, PHP nutzt 80 Prozent des World Wide Web mit Top 10 Millionen Domains. Aus diesem Grund ist es wichtig zu verstehen, dass PHP Ihnen hilft, sich vor Angreifern zu schützen.
Die Sicherung von Webanwendungen vor allen möglichen gefälschten Angriffsversuchen ist die ultimative Pflicht eines Webentwicklers. Sie sollten Ihre Web-Apps so sicher erstellen, dass sie keine Sicherheitsprobleme oder Lücken aufweisen.
PHP ist die weltweit am häufigsten verwendete serverseitige Webprogrammiersprache. Verschiedene PHP-Anwendungen teilen verschiedene Teile ihres Codes und Skripts mit anderen Webanwendungen. Falls der freigegebene Code als anfällig erkannt wird, werden alle Anwendungen, die diesen freigegebenen Code verwenden, gefährdet und als anfällig eingestuft.
Sichern Sie Ihre Apps in der Cloud
Cloudways bietet 2FA, kostenloses SSL und erweiterte Sicherheitsfunktionen auf verwalteten Servern, die Ihre Anwendung schützen.
PHP ist die am meisten kritisierte Skriptsprache, wenn es um Sicherheit geht. Ein großer Teil der Entwickler und QA-Experten glaubt, dass PHP keine robusten Techniken zum Sichern von Anwendungen hat. Das Urteil hat auch einige Gründe, da PHP die älteste und am weitesten verbreitete Sprache für die Entwicklung von Web-Apps ist. Aber seit PHP 5.6 haben wir lange Zeit keine größeren Sicherheitsupdates mehr gesehen und daher hat die Sprache einige Sicherheitsprobleme.
Wie sicher ist PHP
PHP ist so sicher wie jede andere wichtige Sprache. PHP ist so sicher wie jede andere serverseitige Sprache. Mit den neuen PHP-Frameworks und -Tools, die in den letzten Jahren eingeführt wurden, ist es jetzt einfacher denn je, erstklassige Sicherheit zu verwalten.
Wenn wir einen Vergleich machen, ist PHP gleichmäßig gesichert. Rails, Java, Javascript und andere Sprachen hatten im Laufe der Jahre ihre Schwachstellen. „Wenn Sie eine Sprache finden, die keine Sicherheitsanfälligkeit in irgendeiner Form aufweist, können Sie sicheren Code in PHP perfekt schreiben.
Sicherheitsprobleme in PHP CMS
Beliebte CMS wie WordPress, Joomla, Magento und Drupal sind in PHP gebaut und nach Sucuri, die meisten der Schwachstellen in PHP CMS kam im Laufe des Jahres ans Licht 2017:
- WordPress-Sicherheitsprobleme stiegen von 74% im 3. Quartal 2016 auf 83% im Jahr 2017.
- Joomla-Sicherheitsprobleme sind von 17% im 3. Quartal 2016 auf 13,1% im Jahr 2017 gesunken.
- Magento-Sicherheitsprobleme stiegen geringfügig von 6% im 3. Quartal 2016 auf 6,5% im Jahr 2017.
- Drupal-Sicherheitsprobleme sanken leicht von 2% im 3. Quartal 2016 auf 1,6% im Jahr 2017.
Die aktuelle Situation ist nicht gut genug, aber dank Open-Source-Mitwirkenden, die sich bemühen, die Probleme zu überwinden, und wir haben in letzter Zeit einige drastische Änderungen in PHP gesehen. PHP 7.x wurde letztes Jahr mit verschiedenen Updates und Fixes gestartet. Das Beste an PHP 7.x bezieht sich auf die Sicherheitsaktualisierungen, die das Sicherheitsprotokoll der Sprache wirklich überarbeitet haben.
Was enthält dieses PHP-Sicherheitstutorial?
Ich arbeite seit sehr langer Zeit an PHP-Sicherheits- und Performance-Problemen und bin sehr aktiv in der PHP-Community und frage Top-Entwickler nach den Tipps und Tricks, die sie in ihren Live-Projekten verwenden. Daher ist das Hauptziel dieses PHP-Sicherheits-Tutorials, Sie über die Best Practices für die Sicherheit in PHP-Webanwendungen zu informieren. Ich werde die folgenden Probleme definieren und mögliche Lösungen für sie erwähnen.
- PHP regelmäßig aktualisieren
- Cross Site Scripting (XSS)
- SQL Injection Angriffe
- Cross Site Request Forgery XSRF/CSRF
- Session Hijacking
- Dateien vor dem Browser ausblenden
- Sicheres Hochladen Dateien
- SSL-Zertifikate für HTTPs verwenden
- PHP-Apps in Clouds bereitstellen
Hinweis: Bitte betrachten Sie es nicht als vollständigen Spickzettel. Es muss bessere Möglichkeiten und einzigartigere Lösungen geben, die Entwickler auf ihre Anwendungen anwenden würden, um sie perfekt zu sichern.
PHP Security Best Practice
Beim Erstellen einer PHP-Webanwendung sollte sich ein Webingenieur mit Best Practices für die Sicherheit befassen. Eine unsichere Webanwendung gibt Hackern die Möglichkeit, wertvolle Daten wie Kundeninformationen oder Kreditkartendaten zu stehlen. Darüber hinaus kann ein Datenverstoß extreme Auswirkungen auf die Gültigkeit und den zukünftigen Betrieb Ihres Unternehmens haben.
PHP regelmäßig aktualisieren
Derzeit ist PHP 8 die stabilste und neueste verfügbare Version von PHP. Ich empfehle, dass Sie Ihre PHP-Anwendung auf diese neue aktualisieren müssen. Wenn Sie immer noch PHP 5.6 oder 7 verwenden, werden beim Aktualisieren von PHP-Apps viele Veraltungen auftreten. Sie müssen auch Ihren Code aktualisieren und einige funktionale Logiken wie Passwort-Hashing usw. ändern. Es stehen auch einige Tools zur Verfügung, um die Ablehnung Ihres Codes zu überprüfen und Ihnen bei der Migration zu helfen. Ich habe unten einige Tools aufgelistet:
- PHP Compatibility Checker
- PHP MAR
- Phan
Wenn Sie PhpStorm verwenden, können Sie die PHP 7-Kompatibilitätsprüfung verwenden, die Ihnen zeigt, welcher Code Probleme verursacht.
Lesen Sie mehr: PHP Hosting auf Cloudways
Cross-Site Scripting (XSS)
Cross Site Scripting ist eine Art bösartiger Webangriff, bei dem ein externes Skript in den Code oder die Ausgabe der Website eingefügt wird. Der Angreifer kann infizierten Code an den Endbenutzer senden, während der Browser ihn nicht als vertrauenswürdiges Skript identifizieren kann. Dieser Angriff tritt vor allem auf den Orten, wo Benutzer die Möglichkeit zur Eingabe und Übermittlung von Daten hat. Der Angriff kann auf Cookies, Sitzungen und andere vertrauliche Informationen über den Browser zugreifen. Schauen wir uns das Beispiel einer GET-Anfrage an, die einige Daten über die URL sendet:
URL: http://example.com/search.php?search=<script>alert('test')</script>$search = $_GET ?? null;echo 'Search results for '.$search;
Sie können diesen Angriff mithilfe von htmlspecialchars . Mit ENT_QUOTES können Sie auch einfache und doppelte Anführungszeichen ENT_QUOTES .
$search = htmlspecialchars($search, ENT_QUOTES, 'UTF-8');echo 'Search results for '.$search;
Inzwischen können XSS-Angriffe auch über Attribute, codierte URI-Schemata und Codecodierung ausgeführt werden.
Lesen Sie mehr: Verhindern Sie XSS in Laravel
SQL-Injection-Angriffe
Die SQL-Injection ist der häufigste Angriff in PHP-Skripten. Eine einzelne Abfrage kann die gesamte Anwendung beeinträchtigen. Bei einem SQL-Injection-Angriff versucht der Angreifer, die Daten, die Sie über Abfragen übergeben, zu ändern. Angenommen, Sie verarbeiten Benutzerdaten direkt in SQL-Abfragen, und plötzlich verwendet ein anonymer Angreifer heimlich verschiedene Zeichen, um sie zu umgehen. Siehe die unten erwähnte SQL-Abfrage:
$sql = "SELECT * FROM users WHERE username = '" . $username . "';
Der $username kann geänderte Daten enthalten, die die Datenbank beschädigen können, einschließlich des Löschens der gesamten Datenbank im Handumdrehen. Also, was ist die Lösung? DOP. Ich empfehle, dass Sie immer vorbereitete Anweisungen verwenden. PDO hilft Ihnen bei der Sicherung von SQL-Abfragen.
$id = $_GET ?? null;
Die Verbindung zwischen Datenbank und Anwendung wird mit der folgenden Anweisung hergestellt:
$dbh = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'dbusername', 'dbpassword');
Sie können den Benutzernamen basierend auf der obigen ID auswählen, aber warten Sie! Hier wird der SQL-Code ‚GET data‘ in Ihre Abfrage eingefügt. Vermeiden Sie solche Codierungen und verwenden Sie stattdessen vorbereitete Anweisungen:
$sql = "SELECT username, email FROM users WHERE id = ".$id." ;foreach ($dbh->query($sql) as $row) { printf ("%s (%s)\n", $row, $row);}
Jetzt können Sie die obige SQL-Injection-Möglichkeit vermeiden, indem Sie
$sql = "SELECT username, email FROM users WHERE id = :id";$sth = $dbh->prepare($sql, );$sth->execute();$users = $sth->fetchAll();
Eine gute Vorgehensweise ist auch die Verwendung von ORM wie Doctrine oder Eloquent, da die geringste Möglichkeit besteht, SQL-Abfragen in sie einzufügen.
Lesen Sie mehr: Schützen Sie die PHP-Website vor SQL Injection
Cross Site Request Forgery XSRF / CSRF
Der CSRF-Angriff unterscheidet sich stark von XSS-Angriffen. Bei einem CSRF-Angriff kann der Endbenutzer unerwünschte Aktionen auf den authentifizierten Websites ausführen und schädliche Befehle an die Site übertragen, um unerwünschte Aktionen auszuführen. CSRF kann die Anforderungsdaten nicht lesen und zielt hauptsächlich auf die Statusänderungsanforderung ab, indem Links oder geänderte Daten in HTML-Tags gesendet werden. Es kann den Benutzer zwingen, Statusänderungsanforderungen wie das Überweisen von Geldern, das Ändern seiner E-Mail-Adressen usw. auszuführen. Sehen wir uns diese URL an, in der GET requests Geld an ein anderes Konto sendet:
GET http://bank.com/transfer.do?acct=TIM&amount=100 HTTP/1.1
Wenn nun jemand die Webanwendung ausnutzen möchte, ändert er die URL mit Namen und Betrag wie folgt
http://bank.com/transfer.do?acct=Sandy&amount=100000
Jetzt kann diese URL per E-Mail in einer beliebigen Datei, einem Bild usw. gesendet werden, und der Angreifer fordert Sie möglicherweise auf, die
-Datei herunterzuladen oder auf das Bild zu klicken. Und sobald Sie das tun, Sie sofort mit dem Senden riesige Menge an Geld am Ende wissen Sie nie über.
Session Hijacking
Session Hijacking ist eine besondere Art von bösartigem Webangriff, bei dem der Angreifer heimlich die Sitzungs-ID des Benutzers stiehlt. Diese Sitzungs-ID wird an den Server gesendet, wo das zugehörige Array $_SESSION seinen Speicher im Stapel überprüft und Zugriff auf die Anwendung gewährt. Session-Hijacking ist durch einen XSS-Angriff möglich oder wenn jemand Zugriff auf den Ordner auf einem Server erhält, in dem die Sitzungsdaten gespeichert sind.
Um Session-Hijacking zu verhindern, binden Sie Sitzungen immer an Ihre IP-Adresse:
$IP = getenv ( "REMOTE_ADDR" );
Achten Sie darauf, wenn Sie an localhost arbeiten, da es Ihnen nicht die genaue IP liefert, sondern :::1 oder :::127 Typwerte. Sie sollten die Sitzung schnell ungültig machen (Cookie deaktivieren, Sitzungsspeicher deaktivieren, Spuren entfernen), wenn ein Verstoß auftritt, und unter keinen Umständen versuchen, IDs offenzulegen.
Für Cookies empfiehlt es sich, niemals in einem Cookie gespeicherte Serialisierungsdaten zu verwenden. Hacker können Cookies leicht manipulieren, was dazu führt, dass Variablen zu Ihrem Bereich hinzugefügt werden. Löschen Sie die Cookies sicher wie folgt:
setcookie ($name, "", 1);setcookie ($name, false);unset($_COOKIE);
Die erste Zeile des Codes stellt sicher, dass das Cookie im Browser abläuft, die zweite Zeile zeigt die Standardmethode zum Entfernen eines Cookies (daher können Sie false nicht in einem Cookie speichern). Die dritte Zeile entfernt das Cookie aus Ihrem Skript.
Lesen Sie mehr: Redis Server als PHP Session Handler
Dateien aus dem Browser ausblenden
Wenn Sie Micro-Frameworks von PHP verwendet haben, müssen Sie die spezifische Verzeichnisstruktur gesehen haben, die die korrekte Platzierung von Dateien sicherstellt. Frameworks ermöglichen verschiedene Dateien wie Controller, Modelle, Konfigurationsdatei (.yaml) usw. in diesem Verzeichnis, aber die meiste Zeit verarbeitet der Browser nicht alle Dateien, sie können jedoch im Browser angezeigt werden. Um dieses Problem zu beheben, dürfen Sie Ihre Dateien nicht im Stammverzeichnis, sondern in einem öffentlichen Ordner ablegen, damit sie im Browser nicht ständig zugänglich sind. Schauen Sie sich die Verzeichnisstruktur des Slim-Frameworks unten an:
Sicheres Hochladen von Dateien
Das Hochladen von Dateien ist ein notwendiger Bestandteil jeder Benutzerdatenverarbeitungsanwendung. Denken Sie jedoch daran, dass Dateien an einigen Stellen auch für XSS-Angriffe verwendet werden, wie ich bereits oben im Artikel erläutert habe. Zurück zu den Grundlagen: Verwenden Sie immer die POST-Anforderung im Formular und deklarieren Sie die Eigenschaft enctype=“multipart/form-data“ im <form> -Tag. Überprüfen Sie dann den Dateityp mit der finfo-Klasse wie folgt:
$finfo = new finfo(FILEINFO_MIME_TYPE);$fileContents = file_get_contents($_FILES);$mimeType = $finfo->buffer($fileContents);
Entwickler können ihre eigenen benutzerdefinierten und hochsicheren Dateivalidierungsregeln erstellen, aber einige Frameworks wie Laravel, Symfony und Codeigniter verfügen bereits über vordefinierte Methoden zur Validierung von Dateitypen.
Schauen wir uns ein anderes Beispiel an. Der HTML-Code des Formulars sollte folgendermaßen aussehen:
<form method="post" enctype="multipart/form-data" action="upload.php"> File: <input type="file" name="pictures" multiple="true"> <input type="submit"></form>
Und hochladen.php enthält den folgenden Code:
foreach ($_FILES as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmpName = $_FILES; $name = basename($_FILES); move_uploaded_file($tmpName, "/var/www/project/uploads/$name"); }}
Die korrekte Deklaration von UPLOAD_ERR und basename () kann Directory–Traversal–Angriffe verhindern, aber nur wenige andere Validierungen – wie Dateigröße, Dateiumbenennung und Speichern hochgeladener Dateien an einem privaten Speicherort – sind ebenfalls erforderlich, um die Sicherheit der Anwendungen zu erhöhen.
Lesen Sie mehr: Bild- und Datei-Upload in PHP
Verwenden Sie SSL-Zertifikate für HTTPS
Alle modernen Browser wie Google Chrome, Opera, Firefox und andere empfehlen die Verwendung des HTTPS-Protokolls für Webanwendungen. HTTPs bietet einen sicheren und verschlüsselten Zugriffskanal für nicht vertrauenswürdige Websites. Sie müssen HTTPS einschließen, indem Sie ein SSL-Zertifikat in Ihre Website installieren. Es stärkt auch Ihre Webanwendungen gegen XSS-Angriffe und verhindert, dass Hacker transportierte Daten mithilfe von Codes lesen. Cloudways bietet kostenlose SSL-Zertifikate mit einem Klick, die 90 Tage gültig sind und Sie können sie einfach mit einem Klick widerrufen oder erneuern. Sie können die Anleitungen zum Einrichten von SSL-Zertifikaten in Ihren PHP-, WordPress-, Magento- und Drupal-Anwendungen befolgen.
Bereitstellen von PHP-Apps in Clouds
Hosting ist der letzte und wichtigste Schritt für jede Webanwendung, da Sie das Projekt immer auf lokalen PHP-Servern erstellen und auf Live-Servern bereitstellen, die entweder Shared, Cloud oder Dedicated Hosting anbieten. Ich empfehle immer, Cloud-Hosting wie DigitalOcean, Linode, AWS zu verwenden. Sie sind schnell, sicher und sicher für jede Art von Website und Anwendung. Sie bieten immer eine gesicherte Ebene, um DDOS-, Brute-Force- und Phishing-Angriffe zu verhindern, die für Webanwendungen äußerst schädlich sind.
Das könnte Sie auch interessieren: Fallstricke von Laravel Shared Hosting für Ihre Projekte
Um PHP-Anwendungen auf Cloud-Servern bereitzustellen, müssen Sie über gute Linux-Kenntnisse verfügen, um leistungsstarke Web-Stacks wie LAMP oder LEMP zu erstellen. Stattdessen bietet Ihnen die Cloudways Managed PHP- und MySQL-Hosting-Plattform die einfache Möglichkeit, Server mit Thunderstack mit wenigen Klicks bei den oben genannten Cloud-Anbietern bereitzustellen. Der Thunderstack hilft Ihrer PHP-Anwendung, vollständig vor verschiedenen böswilligen Angriffen geschützt zu sein und garantiert eine optimierte Leistung.
Weiterlesen: Erweiterte Cloudways-Staging-Umgebung ist jetzt für alle Benutzer verfügbar
Document Root Setup
Das Document Root für PHP-Anwendungen auf einem beliebigen Server muss auf var / www /html gesetzt sein, damit Benutzer über den Browser auf Ihre Website zugreifen können. In einigen Fällen, wenn Sie APIs mit Frameworks wie Laravel, Symfony und Slim entwickeln, müssen Sie den webroot auf den Ordner `/public‘ aktualisieren.
/public dient der Ausgabe einer Anwendung ähnlich einer einfachen PHP-Website mit Index.PHP-Datei. Der Zweck, den webroot auf var/www/html/public zu setzen, besteht darin, die vertraulichen Dateien wie var/www/html/public .htaccess und .env, die die Umgebungsvariablen und Anmeldeinformationen von Datenbank-, Mail- und Zahlungs-APIs enthalten.
Außerdem empfehlen Frameworks wie Laravel und Symfony, nicht alle Ihre Dateien in den Stammordner zu verschieben, sondern eine schöne Verzeichnisstruktur zu erstellen, um verwandte Dateien wie Ansichten, Modelle und Controller zu speichern.
Protokollieren Sie alle Fehler und verstecken Sie sich in der Produktion
Sobald Sie die Website entwickelt und auf dem Live-Server bereitgestellt haben. Als erstes müssen Sie die Anzeige von Fehlern deaktivieren, da Hacker möglicherweise dieselben wertvollen Informationen aus den Fehlern erhalten. Setzen Sie diesen Parameter in Ihrem PHP.ini-Datei:
display_errors=Off
Nachdem Sie die Anzeige deaktiviert haben, protokollieren Sie jetzt PHP-Fehler in einer bestimmten Datei für zukünftige Anforderungen:
log_errors=Onerror_log=/var/log/httpd/php_scripts_error.log
Natürlich können Sie den Dateinamen nach Belieben ändern.
Das könnte Ihnen auch gefallen: Vereinfachen Sie die Laravel-Fehlerprotokollierung mit PHP-Rollbar-Integration
Whitelist Public IP für Mysql
Wenn Sie mit PHP-Apps arbeiten, müssen Sie die MySQL-Datenbank häufig sowohl in internen Skripten als auch in MySQL-Clients einrichten. Die meisten Clients werden zum Einrichten einer MySQL-Remoteverbindung verwendet, für die die vom Hosting-Server bereitgestellte IP-Adresse oder ein anderer Hostname zum Herstellen der Verbindung erforderlich ist.
Die öffentliche IP-Adresse für die Remote-MySQL-Verbindung muss auf Ihrem Hosting-Server auf die Whitelist gesetzt werden, damit ein anonymer Benutzer keinen Zugriff auf die Datenbank erhalten kann. Auf Cloudways können Sie beispielsweise IP als Whitelist festlegen:
Jetzt können Sie SQLyog oder Mysql Workbench verbinden, um remote mit der Datenbank zu arbeiten.
F: Wie kann ich die PHP-Sicherheit testen?
A: Es gibt nur wenige Codescanner-Tools auf dem Markt, mit denen Sie die Codequalität und Sicherheit Ihrer PHP-Anwendungen analysieren können. PHP Malware Finder (PMF) ist eines der Top-Tools für Sicherheitstests, mit denen schädliche Codes in den Dateien gefunden werden können. Sie können auch RIPS verwenden, ein beliebtes Code-Analyse-Tool, mit dem Sie Code-Schwachstellen in Echtzeit finden können.
F: Wie kann die Sicherheit der PHP-Datenbank gewährleistet werden?
A: Um die Datenbanksicherheit zu gewährleisten, sollten Sie immer Praktiken wie SQL-Injection-Schutz, Datenbank-Firewalls, regelmäßige Datenverschlüsselungen und ähnliche andere verwenden.
F: Was ist eine sichere Methode zum Verschlüsseln von Passwörtern in PHP?
EIN: Md5 ist die Abkürzung für Message Process 5 und sha1 ist die Abkürzung für Secure Hash Algorithm 1. Sie werden beide verwendet, um Zeichenfolgen zu verschlüsseln. Sobald eine Zeichenfolge verschlüsselt wurde, wird sie wiederholt, um sie zu dekodieren. Md5 und sha1 sind besonders nützlich, wenn Passwörter in der Datenbank gespeichert werden.
F: Was ist eine PHP-Schwachstelle?
A: PHP Object Injection ist eine Sicherheitsanfälligkeit auf Anwendungsebene, die es einem Angreifer ermöglicht, verschiedene Arten schädlicher Angriffe auszuführen, z. B. Code-Injection, SQL-Injection, Pfaddurchquerung und Denial-of-Service.
Ein DDoS-Angriff gefährdet Angriffe auf mehrere Computersysteme. Die üblichen Ziele sind Server, Websites oder andere Netzwerkressourcen.
Dies geschieht, wenn vom Benutzer bereitgestellte Eingaben nicht verwaltet werden, bevor sie an die PHP-Funktion unserialize() übergeben werden. Da PHP die Objektserialisierung zulässt, können Angreifer ad-hoc serialisierte Zeichenfolgen an einen wehrlosen unserialize () -Aufruf übergeben.
Einpacken!
Nun, die PHP-Sicherheit Best Practices ist ein sehr großes Thema. Entwickler aus der ganzen Welt neigen dazu, verschiedene Anwendungsfälle zu entwickeln, um Web-Apps zu sichern. Während viele Unternehmen verschiedene Bounty-Programme ausführen, um Sicherheitslücken und Schwachstellen in ihren Anwendungen herauszufinden und so diejenigen Sicherheitsexperten zu belohnen, die auf kritische Lücken in den Anwendungen hinweisen. Dieser Artikel behandelt grundlegende PHP-Sicherheitsprobleme, damit Sie verstehen, wie Sie Ihre PHP-Projekte vor verschiedenen böswilligen Angriffen schützen können. Ich werde auch in Zukunft über einige weitere PHP-Sicherheitstipps und -tricks schreiben. Bis dahin können Sie Ihre Gedanken und Sicherheitspraktiken im Kommentarbereich unten einbringen.
Diesen Artikel teilen
Kundenmeinung bei
“ Cloudways Hosting hat einen der besten Kundenservice und Hosting-Geschwindigkeit“
Sanjit C
Shahroze Nawaz
Shahroze ist PHP Community Manager bei Cloudways – Einer verwalteten PHP-Hosting-Plattform. Neben seinem Berufsleben liebt er Filme und Reisen. Sie können ihn per E-Mail an