Sicherheit bei PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Sicherheit bei PHP

    Hallo,
    kann man mir jemand sagen, warum man bei PHP immer auf Sicherheit achten musss angeblich?
    Hab in dem PHP Tutorial hier gelesen man müsste immer alle Eingaben maskieren, weil sonst Hacker
    was einschleusen können. Aber das klingt mir etwas komisch. Warum macht PHP denn sowas nicht von selbst? Das kann man in der Konfiguration von
    PHP sicher einstellen das es das automatisch macht oder?
  • Um meine Signatur zu zitieren: All incoming Data is evil. Das soll nichts anderes bedeuten, als dass du deine Programme immer so bauen solltest, dass nichts "schiefgehen" kann. Du musst davon ausgehen dass das Internet voll von Spinnern ist, die Spass daran haben, deine Homepage kaputt zu machen. Manchmal liegt auch finanzielles Interesse vor (Server hijacken). Wenn du sämtliche Daten so lässt, wie der User sie schickt hatte er viele Möglichkeiten. Er kann eine [wikipedia]http://de.wikipedia.org/wiki/SQL_Injection[/wikipedia] unterschieben, wenn du SQL-Statements nicht escapest, um so entweder Daten aus deiner Datenbank zu lesen die ihn nichts angehen, Daten darin zu ändern (Zugangspasswörter) oder sie zu löschen (vielleicht, weils ein Wettbewerber ist). Er kann ebenfalls HTML Code einbauen, um auf deiner Seite schädlichen Code zu hinterlegen. Angenommen, du Betreibst ein Forum und achtest nicht auf das Escapen von HTML-Entities. Dann schreibt ein Angreifer einfach fiesen Code hin und jeder der einen nicht aktualisierten Internet Explorer hat, kriegt einen Virus. Der Hacker freut sich über mehr Zombie-PCs, du bist Verantwortlich und die User haben kaum eine Chance (weil die meisten es nicht besser wissen). Andere Möglichkeiten sind [wikipedia]http://de.wikipedia.org/wiki/XSRF[/wikipedia], [wikipedia]http://de.wikipedia.org/wiki/Cross-Site_Scripting[/wikipedia] und [wikipedia]http://de.wikipedia.org/wiki/Remote_File_Inclusion[/wikipedia]). Bei allem können Leute zu schaden kommen und im kommerziellen Umfeld musst du als Webseitenbetreiber dafür grade stehen.
    Warum macht PHP das nicht von alleine? Wenn du ein SQl-Statement abschickst, hast du es vorher zusammengebaut, aus verschiedenen Einzelteilen. Es ist nicht zwingend notwendig, dass da externe Daten dabei sind, das kann PHP gar nicht so genau wissen. Es ist deine Aufgabe zu prüfen, dass wenn da externe Daten bei sind, dass diese in Ordnung sind, es gibt auch bestimmt (exotische) Zwecke warum man das grade nicht machen möchte, das will PHP einem natürlich nicht verbauen.
    [wikipedia]http://de.wikipedia.org/wiki/Prepared_Statement[/wikipedia]s sind ein erster Ansatzpunkt um SQL-Injections zu verhindern, ohne dass man selber etwas machen muss.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Hi,

    php selber bietet diese Funktionalität schon an : "magic_quotes_gpc". Ob das soo sinnvoll ist, das einzuschalten ist fraglich, da es auch viele Eingaben "zerstören" kann.
    Und das man auf die Sicherheit einer Application oder eines Scriptes Acht geben sollte, ist keine PHP Eigenheit. Immer dort wo Daten vom Benutzer übergeben werden sollte man aufpassen.
    Treu nach dem Motto "Never trust incoming data!". Wenn du danach programmierst, dann bist du auf dem richtigen weg.

    Das Problem sind also meistens weniger die Programmiersprachen, sondern diejenigen, die damit unvorsichtig umgehen.


    Das Thema wird auch unterschätzt. Hier wird immer von "Hackern" gesprochen. Das hört sich so abgehoben an. Tools für Xss Attacken oder SQL Injections gibt es genug, dafür braucht man nichtmal Kenntnisse. Wenn man ein Firefox Plugin installieren kann, reicht das vollkommen aus um bei einer unsauberen Programmierung mal eben die ganze Datenbank zu löschen oder ein paar Tabellen zu leeren, oder deine Seiten mit nervigen JavaScript Alerts zu bombadieren.


    edit:
    Der Sicherheitsaspekt ist auch nicht Aufgabe der Programmiersprache. Dafür gibt es wenn Frameworks, die sich damit befassen z.B http://php-ids.org