preg_match("/$string_mit_sonderzeichen"/i,$wie);

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • preg_match("/$string_mit_sonderzeichen"/i,$wie);

    Ich bin dabei ein simples IDS (Intrusion Detection System) zusammenzustellen.

    Ziel ist es ein Webserver-Logfile nach suspecten Signaturen zu durchsuchen.
    Ich habe 700 Signaturen. Jede Zeile des Server-Logs ist einzeln zu prüfen, ob
    eine der suspekten Signaturen darin vorkommt.

    Das ganze funktioniert schon mit eregi()

    eregi() benötigt jedoch für 700 Signaturen je Logeintrag 0,5 Sekunden.
    Das ist viel zu unperformant. Bei 5000 Records dauert der Check 2.5oo Sekunden!

    Deshalb kämpfe nun das erste Mal mit preg_match() und habe dabei das Problem mit den Sonderzeichen.

    Ich komm nicht hin. Die Signaturen lade ich in einen Array.

    Wie sind diese am Besten zu Quoten, um über preg_match den Vergleich durchzuführen?
    Mit AddSlashes(), QuoteMeta() beides, oder eine andere Funktion?
    (Habe mit beiden schon probiert und unterschiedlich kombiniert, bekomme aber immer
    andere Ergebnisse - und keines stimmt.)

    Signaturen sehen in etwa wie folgt aus:
    ""
    #filename
    *.asp
    *.exe
    *.idc
    $$$$$$
    $DATA
    %%%%%
    %%35%63
    %%35c
    %00
    &del+/s+c|3a|\*.*
    ../../../
    ..\..\..\
    ?M=A
    /?PageServices
    /?wp-cs-dump
    /\
    |2f2f2f2f2f2f2f2f|
    ~root
    /_vti_pvt/administrators.pwd

  • #2
    Naja, ich würds mit strpos() oder so machen...
    PHP-Code:
    strpos($log,$suspicious_signature//FALSE wenn nicht gefunden 
    Aber als RegExp geht's auch:
    PHP-Code:
    "/\\Q".$suspicious_signature."\\E/i" 

    CAT Music Files

    Kommentar


    • #3
      Danke.

      Mit der naheliegenden Funktion strpos() konnte ich das Script von 2.500 Sekunden auf 41 Sekunden tunen !!

      // in PHP 4.03 und danach
      if (strpos($log,$suspicious_signature) === false) { // Achtung 3 Gleichheits-Zeichen
      // nicht gefunden
      }

      Thx

      Kommentar

      Lädt...
      X