Beiträge von Synonym

    Zitat von guppy;50882

    :D@ Syno bin mir sicher laut AGB dürfen die das und für eine neue Kartefindest Du bald 15,- bei der Kontenbarechnung.


    Ja, das hat die Dame am Telefon auch versucht, mir eine neue Karte aufzudrehen.... Nene sagte ich da nur, mit Edding kann ich das selber drauf schreiben. Aber auf die Frage, warum man nicht benachrichtigt wurde kam keine Antwort, nur, es gab doch ein Schreiben. Ich: Das habe ich nicht! Sie: Klar, das war intern, ich muss mal sehen. Stimmt, Nummer ist falsch... Möchten Sie eine neue Karte bestellen?

    Boa... stink sauer bin.... Da wechsel ich doch Ende Dezember mein Bankkonto, bekomme am 27.12. meine EC-Karte, teilen den Kunden die neue Verbindung mit inkl. BIC und IBAN und was ist nun? Jetzt melden sich die Kunden, die BIC wäre falsch. Auf die Karte gesehen und einen Schreib- Lesefehler vermutet (wer druckt auch schwarze Schrift auf schwarzen Hintergrund??), aber nein, die steht genau so auf der Karte. Also Bank angerufen. Und jetzt dachte ich, ich höre nicht richtig. Das war ein Fehler der Bank, liegt angeblich an einer Systemumstellung, dabei wurde leider eine falsche BIC auf die Karte gedruckt... Und die halten es nicht für nötig das einem Kunden zu sagen ???

    Äm Moment.....

    Auf der Webseite ist es Base64-kodiert, ebenso alle anderen Bilder. Das macht also nicht die Telekom, denn da bin ich nicht. Läuft auf dem Server mod_pagespeed? Das macht das nämlich auch, genau aus dem gleichen Grund!

    Diese 1.2.3.11/bmi ist jedenfalls ein Proxy der Telekom, von dem sehe ich aber nichts hier.

    Zitat

    Habe auch einen Decoder gesucht für Base64. Ich möchte schon wissen was da passiert


    Das bringt Dir aber nichts, wenn das image/png ist. Das kannste schon dekodieren lassen und dann haste die Rohdaten vom PNG. Mit denen kannste auch nichts anfangen ;)

    Mach das Bild mit einem Texteditor auf und schau es Dir an, genau das würdest Du beim dekodieren bekommen.

    Ja, aber das Base64 ist ja nur das Bild. Da wird der SRC zur Datei entfernt und die Datei selbst eben als Base64 eingebunden. Der Vorteil ist ja eben, dass das Bild dann auf dem Proxy liegt und bei der Seitenauslieferung gleich mit im Quelltext steht und eben nicht extra angefordert werden muss.

    P.S: Das macht auch Piwik mit seinem Pixel. Das wird auch als Base64 ausgeliefert und keinen extra Request zu verursachen.

    Hm, DSL-Festnetz oder Mobile. Bei Mobile ist das durchaus üblich und machen viele. Was das soll? Beschleunigung der Webseiten. Warum sind die Bilder als Base64? Genau aus dem gleichen Grund. So ist es nur ein Request der abgesetzt werden muss und nicht noch für jedes Bild einer hinterher. Genau das macht Google mit seiner Bildersuche.

    Zitat

    Irgendwie muß das doch zu machen sein, ds die Zeilenhöhe der Rechnungspositionen immer z.B. 20mm sein sollen


    Auch das geht. Kommt nur drauf an, wie Dein Script da arbeitet. Aber die Zellenhöhe kann man angeben. So gesehen kennt FPDF ja auch keine Zellen oder Tabellen im Sinne von HTML. Das Ding arbeitet mit mm und eigenen Boxen, die dann anhand von x- und y-Positionen ausgerichtet werden. Man kann also sagen, eine Zelle (Box), 30mm breit, 15mm hoch an die Position 100mm von oben und 50mm von links. Die Frage ist hier wirklich nur, wie Dein Script da arbeitet.

    z.B. bei mir:

    Code
    // Header Anfang
    $pdf->SetFont('Arial','BI',10);
    $pdf->Cell($spalte1,6,'Position','TB',0,'L');
    $pdf->Cell($spalte2,6,'Anzahl','TB',0,'L');
    $pdf->Cell($spalte3,6,'Artikel','TB',0,'L');
    $pdf->Cell($spalte4,6,'Einzelpreis','TB',0,'R');
    $pdf->Cell($spalte5,6,'Gesamtpreis','TB',0,'R');
    $pdf->SetFont('Arial','',10);
    $pdf->Ln();
    // Header Ende


    Diese ganzen $spalteX sind die Breitenangaben (vorher im Script festgelegt) und die "6" ist die jeweilige Höhe.
    *** Link veraltet ***

    Ich für meinen Fall habe mir damals eine Rechnung mit Word erstellt, so wie ich sie haben will. Und dann mit FPDF so lange die Zellen hin und her geschoben, bis die deckungsgleich waren wie meine Rechnungsvorlage.

    Header und Footer sind immer auf jeder Seite und fix positioniert. Der Anfang der Artikelliste auch. Die Länge ist variabel, so wie bei Dir. Und da kommt dann eben mit $pdf->GetY() dynamisch ein Seitenwechsel mit rein.

    Allerdings ist Dein verschobener Header / Footer nicht normal. Wie wird der denn generiert? Auch per Cell und Positionsangaben? Wenn ja, dann liegt hier der Fehler und irgendwo wird der x bzw y Wert nicht resetet. FPDF hat aber gerade für Header und Footer die Möglichkeit, eine eigene Funktion zu erstellen, dann sind beide immer exakt an der gleichen Stelle, auf jeder Seite.

    Schaut das bei Dir so in etwa aus?

    So, nochmal ich. Habe mal bei mir nachgesehen, wie ich das mache. Muss nun sagen, es gibt noch eine Möglichkeit 3 und die nutze ich.

    Bei mir habe ich das im Script.
    if($pdf->GetY() > 222)
    {
    $pdf->AddPage();
    }

    $pdf->GetY() liefert die aktuelle Position auf der Seite.
    *** Link veraltet ***

    Wenn ich mich recht erinnere, dann ist die Angabe in Millimetern, also in meinem Fall oben: Wenn aktuelle Position größer als 222mm, dann neue Seite anfangen. Nur wie das nun bei Dir reinpasst, gute Frage. FPDF bietet die Funktionalität jedenfalls an.

    Hm, das Thema hatte ich bei mir auch, exakt das gleiche. Zwei Möglichkeiten:

    1. Du errechnest die Größe des "Artikelbereichs" in Pixel und gehst dann nach dem Wert. Würde ich aber nicht machen, da sehr umständlich und nicht unbedingt korrekt.

    2. Du zählst nicht die Zeilen der Tabelle, sondern die Zeilen selbst, die geschrieben werden.

    "if ((is_long($item_count / 32) && $i >= 20) || ($i == 20)){"

    Das ist eine gute Frage. Übersetzt heißt das ja nur, "erstelle eine neue Seite, wenn das Ergebnis von $item_count / 32 ein Integer ist und zugleich $i >= 20 .... oder wenn $i = 20 ist"

    Für was das aber genau ist, keine Ahnung, das wird im Code nicht wirklich ersichtlich. Die Bedingung is_long() trifft jedenfalls nur zu, wenn $item_count 32, 64, 96 oder ein vielfaches davon ist.

    Zitat

    Syno denk mal weiter, wie bekomm ich dort ohne Aufwand und serverlast ein error produziert?


    Guter Ansatz. Ich persönlich finde die Analyse eines access-log nämlich nicht sonderlich gut. Es geht, aber es braucht wesentlich mehr Ressourcen, als ein echtes Fehlerlog. Grund: Im Access-Log steht viel zu viel drinnen, was analysiert werden muss, aber gar nicht relevant ist.

    Wie Du da einfach einen Fehler produziert / geloggt bekommst? Mit PHP. Eine index rein, die aufgerufen wird und die macht dann nichts anderes, als einen Eintrag in ein bestimmtes Log zu schreiben.

    error_log hilft hier weiter:
    *** Link veraltet ***

    Dann halt einen Filter dafür erstellen (aber Beispiele gibt es nun mehr als genug, gehören nur angepasst) und los kann es gehen.

    Na das ist ja mal spaßig:
    *** Link veraltet ***

    Kann mir das bildlich vorstellen. Da steht ein LKW oder ein DHL-Mitarbeiter drei Tage vor der Tür und wartet darauf, dass er mir den noch nicht bestellten Kühlschrank endlich liefern darf.

    Zitat

    und sogar die Zeit berücksichtigen, wie lange der Mauszeiger auf einem Produkt ruht.

    In den Fällen, in denen sich die per Algorithmus ermittelte Bestellprognose als falsch erweist, denkt Amazon sogar darüber nach, die Ware dennoch auszuliefern – als Geschenk für einen Kunden, der sie zwar nicht bestellt hat, aber aufgrund der Auswertung seiner Daten vermutlich daran interessiert ist.


    Also, dann schmeiße ich mal DontSleep an und bleibe ab sofort mal ganz lange mit der Maus auf einem Bild von nem neuen Fernseher :)

    tzzz... Sachen gibts...

    Zitat von Fridolin;50803

    Habe eigentlich gedacht das ihr mich jetzt niedermacht.
    Wegen frühzeitiger Rente und so. So wie ne faule Sau.


    Ach wieso. Ob nun normale Rente oder Frührente, für einen der sein Leben lang gearbeitet hat ist doch beides angemessen. Gibt doch ganz andere hier, die viel lieber die ersten 30 Lebensjahre studieren und dann 30 Jahre einen Job suchen. Und, die werden auch bezahlt.

    Schade um Fridolin. Das mit dem schräg ansehen kann ich mir gut vorstellen, wollte es aber nicht... Mein Wellensittich hatte das damals auch gemacht.

    Ehrlich gesagt nicht wirklich. So was in der Art hatte ich auch mal laufen, da musste auch vorher eine bestimmte Seite aufgerufen werden. Die kleinen Kiddies hält das ab, weil die einfach doof sind, aber wenn die mal etwas vernünftig denken und den Login einmal per Hand durchspielen, dann sehen die auch den Referer und senden den mit.

    Fail2Ban ist auch hier besser und zuverlässiger. Sagt ja keiner, dass die Zugriffe 5 binnen 30 Sekunden sein müssen. Kann ja auch 100 binnen 2 Stunden sein oder so. Muss halt ein Wert sein, der normale Kunden nicht beeinträchtigt bzw. der bei normalen Kunden nicht vorkommt.

    Und bei DDOS dann eben ganz kleine Werte, etwa 15 Zugriffe binnen 2 Sekunden oder so. Das macht ein normaler Mensch normalerweise auch nicht.

    Wenn der das aber wirklich so macht, dass der alle 2-3 Versuche pro Sekunde die IP wechselt und das vielleicht noch simultan mit 50 oder mehrt Requests, dann sehe ich da ganz andere Probleme. Das wird der Server auf Dauer gar nicht mitmachen. Wobei 2-3 schon sehr wenig ist, deren Kontingent ist hoch, aber nicht unendlich. Aber klar, wenn der oft genug wechselt und immer unter dem Limit bleibt, dann bringt Fail2Ban auch nichts und es kommt eher der Server an die Leistungsgrenze.

    Zitat

    EDIT: Wie stoppst Du z.B. DDOS auf meine IMSCP-Loginseite?


    Das müsste so gehen wie voher im Beispiel mit dem WP-Login. Habe kein imscp, daher anhand deren Demo-Seite.

    Code
    [Definition]
        failregex = ^ .*"POST .*/admin/index\.php HTTP.* 200 .*$
        ignoreregex =


    Code
    [apache-imscp]
        enabled = true
        filter = apache-imscp
        action = iptables-multiport[name=apache-imscp, port="http,https", protocol=tcp]
        port = http,https
        logpath = /var/www/*/log/access_log
        maxretry = 5
        findtime = 15
        bantime = 240



    Natürlich ungetestet, aber so in der Art. Pfade müssen angepasst werden. Ob imscp eine eigene Fehlermeldung schreibt, keine Ahnung. Wenn ja, dann könnte man auch die nehmen als Suchstring.


    Zitat

    Ich will sagen: Wenn sich 10 echte Kunden pro Minute in meinem Shop einloggen wollen, das ist das gut.
    Aber was macht fail2ban, wenn sich dazu noch 100 falsche Kunden einloggen wollen und nur Loginnamen und PWs testen?


    Das wäre egal. Fail2Ban reagiert nur auf IP-Adressen, deren Limits überschritten sind, also mehr als maxretry in findtime. Die anderen Kunden, bzw. deren andere IPs sind dann nicht betroffen, denn die werden ja alle extra gezählt. Summiert wird also immer nur eine IP. (Ähnlich mysql. sum(Zugriffe) *** GROUP BY ip)

    Bei der Angabe
    maxretry = 50
    findtime = 120
    wird also jede IP gesperrt, zu binnen 2 Minuten mehr als 50 Zugriffe hat.

    Dann werden die einzelnen IPs immer erst dann gesperrt, wenn das Limit überschritten ist. Anders geht es ja nicht, könnten ja auch hundert Kunden gleichzeitig auf dem Login sein und die sollen ja rein kommen ;)

    Hm, Guppy, ich glaube da reden wir aber aneinander vorbei.

    Ich meinte das hier:

    "Wenn jemand 100x pro Minute z.B. auf eine Loginseite im Shop per http zugreifen will und dabei PWs austestet"

    Das macht der Default-Filter nicht. Der reagiert vielleicht auf Fehler, aber dann auf alle, egal wo und wie die entstehen. Um explizit den Login zu schützen bedarf es einer extra Regel, einem Filter ähnlich dem hier, der auf WP-Fehllogins reagiert.

    *** Link veraltet ***

    Wobei der aber auch nicht unterscheidet zwischen erfolgreicher Login oder fehlerhaft. Der geht einfach über die Anzahl im Zeitraum.

    Ein Fehlerhafter Login in einem PHP-Script schreibt ja selbst keine Meldung ins Error-Log. Das ist für den Apache auch kein Fehler, sondern ein normaler Seitenaufruf bei dem Daten per POST übertragen werden. Die Antwort, also erfolgreich oder nicht, das ist dann ganz normal GET. Das Apache-Modul auth ist da gar nicht beteiligt. Beim Passwortschutz der htaccess allerdings schon, denn hier übernimmt die Authentifizierung der Apache und nicht PHP.

    ja. Es lässt sich alles blocken, was in einem Log steht und per Fail2Ban-Filter erkannt wird / werden kann. Wenn Confixx also eine entsprechende Meldung in ein Log schreibt, dann ja. Die Filter sind schon umfangreich vorhanden, können aber auch selbst erstellt werden.

    Genau genommen würde sogar ein Dateizugriff zu sperren sein, z.B. Download zu schnell und zu oft. Der Download muss dann halt nur eindeutig im Logfile erkennbar sein und vor allem so sein, dass den ein Filter filtern kann. Also einfach das Access.Log auswerten geht nicht, denn das wären ja alle Dateizugriffe. Aber ein Filter, der genau auf eine Datei achtet, das geht.

    guppy
    Kommt drauf an, ob der Filter für Apache auch geladen ist. Default ist glaube ich nur SSH. Und wenn der Apache-Filter geladen ist, dann reagiert der auf Fehllogins, aber nur als apache-auth, also Fehllogins über htaccess. Ist das aber ein Loginsystem von PHP, dann steht das nicht im Log.