[PHP] Brauche kleine Stützhilfe für ein Script

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Yuri, 24. April 2007 .

  1. 24. April 2007
    Brauche kleine Stützhilfe für ein Script

    Hallo,

    vorweg eins: ich hab vor einem das letzte mal mit PHP gearbeitet, aber jetzt bin ich in ne' Firma gekommen, wo ich das wieder brauche und muss auch gleich mal folgendes programmieren.

    Eine Webseite will einen Suchindex erstellen, welcher mir alle Textinhalte aller Seiten übergibt und ich aus diesen Texten eben die Sonderzeichen, Zahlen & HTML/PHP-Tags entfernen muss.
    Ebenefalls sollen Umlaute wie ä in ae umgewandelt werden.

    Eben für den Suchindex, der alle 24 stunden aktualisiert wird.

    Das gerade ausgezählte hab ich mir selbst wieder zusammengebastelt (bin schon wieder recht gut in PHP reingekommen (für paar Stunden^^)).
    Aber ich habe folgendes Problem.

    Spezielle Bezeichnungen wie bspw. R2D2 sollten so bleiben, da sowas ja evtl ne Produktbezeichnung sein kann oder sowas hier: 422-WAR
    da dürfen dann die Ziffern und das Sonderzeichen weder entfernt noch getrennt werden.

    Kennt ihr da ne' gute Möglichkeit, wie man sowas bewerkstelligen kann?

    Muss jetz kein Hightech-Script sein, da das mehr oder wenigr intern und als Cronjob läuft.
     
  2. 24. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    Nabend, also ich kann dir da leider nicht so Recht weiterhelfen, ich bin da echt überfragt wie man solche Dinge wie R2D2 etc. ohne spezielle Markierung "leicht" entfernt, ich hab da zwar ne Idee aber halte diese nicht für effektiv. Interessiert mich also auch ....

    SRY, wenn du das als Spam ansiehst, aber ich stelle auch manchmal Fragen wo gar nix zurückkommt und da bin ich über jeden froh der mit mir drüber nachdenkt ...
     
  3. 24. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    Ja... hab heute auch ziemlich viele Dinge ausprobiert aber irgendwas funktioniert letztendlich doch nicht.
    Mein Problem ist wohl schlichtweg noch die Definition solcher spezieller Elemente, die das Script berücksichtigen muss.
    Aber das übersteigt eben meinen Geist noch =P

    Bei folgendem Text hier: "Das, ... ist ein Test von 422-WAR & R2D2, 0 0 000 aÄü"
    muss das dabei rauskommen: "Test 422-WAR R2D2 aAeue"

    Gibt auch "Blackwords" wie ist, sein, wird usw, die auch automatisch entfernt werden, aber das ist kein Problem.

    Und der "bereinigte" String wird eben getrennt und in ein Array gepackt und in den Suchindex geschrieben (Tabelle).
     
  4. 24. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    paar anregungen:

    ich würde das so machen:
    1. das ganze an leerzeichen zerteilen: hat den vorteil dass du einzelne unterstrings eher als bezeichnung von produkten oder so unterscheiden kannst
    2. du suchst dir irgendeine definition für produktbezeichnungen: zB sagen wir dass zahlen und sonderzeichen die nicht alleine darstehe produktbezeichnung sein können ka wies bei euch definiert ist musst vll da bissl nachdenken vll kannst du ja sagen dass links und rechts zeichen sein müssen dann ist ein bindestrich erlaubt etc. nun machst du mit diesem überlegungen dir einen RegExp ausdruck der sowas überprüft danahc kannst du mithilfe dieses ausdrucks den string überprüfen -> bei false kannst du dann mit str_replace halt einfach alles so verändern wie du es haben willst dann machst du mit implode wieder alles zusammen und gut ist
     
  5. 24. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    Du müsstest die Form der "Produktcodes" am besten vorher wissen, dann kannst du einfach mit nem regex Prüfen ob es nen Produktcode ist.

    function parseText($text)
    {
    while(blaa text zerteile blaa) {
    if(regexp stimmt überein)
    continue;
    }
    }
     
  6. 25. April 2007
    AW: Brauche kleine Stützhilfe für ein Script


    Mh gibt es irgendein Wort im Deutschen wo offiziel Zahlen drin sind oder sowas? Weil, ich habs letztens shcon in einem anderen Thread gesagt, Funktionen auf einen Text anzuwenden können immer krasse Sicherheitslücken aufreißen und der Server schnell ausreizen, wenn man jetzt nicht grad google heißt ..... deswegen müßte man da schon echt mit harter GEdankenarbeit dran gehen oder das von speziellen Programmen/selbstgeschriebenen PHP Modulen erledigen lassen.
     
  7. 25. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    ODer wie wärst, wenn du einfach eine Blacklist aufsetzt mit Wörtern, die von dieser Sonderzeichen-Ersetzung ausgeschlossen sind?
    Wenn du alle Podukbezeichnungen hast, kannst du die ja von dem Umwandeln ausschliessen, so dass diese nicht zerstückelt werden.
    Als z.b. mit if($artikel == "422-WAR R2D2 aAeue") { nix machen } else { sonderzeichen umwandeln }
     
  8. 25. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    Hm nein... aus dem einfachen Grund, da sowas zu viel zusätzlicher Aufwand für den Kunden wäre, welcher er eben nicht möchte.
    Hab heute erstmal eine einfachere Lösung verwirklicht, welche erstmal ganz normal den Text "schneidet", Wörter wie "es" und "ist" entfernt werden.

    Werde mich mal die Tage hinsetzen und schauen, wie man sowas noch intelligenter und konformer für den Kunden lösen kann.
    Ich denke, regexp ist da ein sehr guter Ansatz.

    Vielen Dank euch, ihr habt alle ne' BW.
     
  9. 29. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    Was für ein Schwachsinn, wenn man nicht scripten kann, ja, aber was denkst du was ein Forum/Gästebuch/Portal/Suchfunktion oder sonstwas macht, was soll das für eine große Sicherheitslücke sein ? Scripte die mit Usern arbeiten gehen natürlich immer ein gewisses Risiko ein wenn sie User-Manipulierbare Daten bearbeiten, aber das hat 1. nichts mit funktionen zutun und 2. gehört das halt zum sicheren scripten dazu
     
  10. 29. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    Falls dieser Text auf meine Aussage bezogen war, solltest du dich vielleicht besser ausdrücken und deinen Text ordentlich addressieren.

    Wie du selbst schon sagst, gehört ein gewisses Risiko dazu wenn man mit möglicherweise manipulierten Daten von Usern arbeitet, aber kritisierst mich gleichzeitig, dass ich genau das bestätigte und zur Vorsicht mahnte?
    Vielleicht solltest du deine Kritik einfach nochmal überdenken, denn meine Aussage, dass man zum Einen aus Gründen der Perfomance und zum Zweiten aus Gründen der Sicherheit sparsam und sinnvoll mit Textwrappern (besonders bei Blobs) umgehen soll, kann weiterhin so bestehen bleiben.

    Natürlich muss man Usereingaben kontrollieren, falls du es anders verstanden hast, war das nicht meine Absicht!

    "Was soll das für eine große Sicherheitslücke sein?" ...
    Beispiele?
    phpBB Remote Command Execution (Viewtopic.php Highlight)

    Hardened-PHP Project - PhP Security

    - Advisory 13/2006

    Sollte man noch tiefer in der Materie sein, würde man auch noch mehr finden.

    Solltest du mir jetzt ankommen, dass das alte Meldungen sind, bitte ich dich zu bedenken, dass nicht auf jedem Server immer die aktuellste Version läuft und auch noch alte PHP Version im Umlauf sind. Zusätzlich dazu ist zu beachten, dass, analog zum Ausstieg von Stefan Esser aus dem Security Response Team, nicht alle Fehler von PHP sofort offen gelegt und behoben werden!

    Ich persönlich bin natürlich auch nicht gefeit vor solchen Fehlern von PHP selbst und der erweiterten Technik die dahinter steht (Beispiel Zendtechnologie für das Sessionclustering), aber bezüglich Userdaten die das Medium wechseln, habe ich mehrere Layer die unabhängig von einander auf Benutzereingaben reagieren und diese auch steuern, in der Hoffnung dass dies sinnvoll, sicher aber auch sparsam vollzogen wurde.

    EDIT: Natürlich kann man nach Gefahrenstufen abwägen, aber man sollte sich schon bewußt sein, mit was man arbeitet und wie es im Notfall reagiert!
     
  11. 29. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    Du brauchst mir keine Advisories zu posten, ich bin selber bei diesen seiten mit mehr als 20 eigen gefunden Advisories vertreten, mehr als 3 haben es sogar in die heise New o.Ä. geschafft.

    Nur glaube ich, dass du mich nicht ganz verstanden hast. Ich habe gesagt das natürlich ein gewisses Risiko besteht, aber solange man nicht bei der validierung schlampt, ist das kein Ding. Und regex lernen ist ne Sache von paar Stündchen, dieser eine Fehler den du mir da gezeigt hast ist einfach nur Dummheit.

    Zum anderen sollten bestimtme funktionen einfach _nicht_ verwendet werden, es wird auf genug sicherheitsbezogenen php Seiten davor gewarnt, eval() zu benutzen, da mit dieser funktion im falle eines Angriffs sogar Systembefehle ausgeführt werden können.

    Das beispiel mit den Fehler in PHP selber ist mist, dagegen kann man nix machen, und genausowenig "besonders aufpassen" mit User-Manipulierbaren Daten", da es genauso den apache, den ftpd oder sonstwas treffen kann, gegen sowas kann man halt nix machen und muss auf die zur verfügung gestellten patches warten. Man kann nicht vorraussehen, das eine durch User-Daten manipulierbare funktion in PHP existiert, jetzt im nachhinein deine Argumente auf diesen Fehler zu schieben ist schwachsinnig.

    Dann mach dich "gefeit" davor ? Ein wissen für sicheres Scripten grade in PHP kann man sich in wenigen Tagen komplett aneignen.
    Dein zweiter ansatz mit mehreren layer ist schwachsinnig. Du redest davon das man auf Sicherheit und Performance achten muss, und implementierst selber mehrere Layer, die die Usereingaben überprüfen ? Eine einzige, saubere und sichere Validation reicht vollkommen aus.
     
  12. 29. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    Edit und Text-del: Ach weißt du was, du hast Recht und ich hab meine Ruhe. Du hast die Advisories geschrieben und ich habe keine Ahnung.
    Ich habe meine Argumentation mit Beispielen gestützt und appeliere für mehr Sicherheitsbewußtsein. Mich weiter vor dir Profi rechtzufertigen brauche ich nicht. EoD pour moi ...
     
  13. 29. April 2007
    AW: Brauche kleine Stützhilfe für ein Script

    Klägliche versuche einer fehlende Argumentation ? Du bist naiv.
    Ich kritisiere nicht dein Sicherheitsbewußtsein, sondern dein übertriebenes Bewusstsein. Es gibt viele schlaue Leute draußen, die auch noch die kleinste Lücke ausnutzen können, aber wenn du alles auf die basis von PHP-Fehler beziehst, ist auch ein echo nen Sicherheitsrisiko.
     
  14. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.