CreaCaptcha

email-obfuscation.php

Email-obfuscation bootstrap: content-filter mode and full-page-buffer mode.

Table of Contents

Functions

creationell_captcha_register_email_obfuscation()  : void
Registers email obfuscation on `init`. The decoder script is always registered; then, unless the kill-switch is set or the feature is off, the configured mode is wired up — the content filters (module 7) or the full-page output buffer (module 8).
creationell_captcha_register_email_buffer()  : void
Wires up the full-page-buffer mode: on `template_redirect` for non-feed front-end requests it enqueues the decoder script and starts an output buffer whose callback obfuscates the page body at flush time.
creationell_captcha_email_buffer_filter()  : string
The buffer callback itself: decides whether this response gets rewritten and hands it to the obfuscator when it does.
creationell_captcha_response_is_html()  : bool
Whether the response being buffered is (still) an HTML document.

Functions

creationell_captcha_register_email_obfuscation()

Registers email obfuscation on `init`. The decoder script is always registered; then, unless the kill-switch is set or the feature is off, the configured mode is wired up — the content filters (module 7) or the full-page output buffer (module 8).

creationell_captcha_register_email_obfuscation() : void

creationell_captcha_register_email_buffer()

Wires up the full-page-buffer mode: on `template_redirect` for non-feed front-end requests it enqueues the decoder script and starts an output buffer whose callback obfuscates the page body at flush time.

creationell_captcha_register_email_buffer(EmailObfuscator $obfuscator) : void

Der Callback fasst den Puffer nur an, wenn die Antwort HTML ist (EO-5) und eine Größengrenze nicht überschreitet (EO-4). Beides schützt fremde Antworten davor, umgeschrieben zu werden, und verhindert, dass der Obfuskator für eine sehr große Antwort eine zweite Kopie im Speicher aufbaut. Was beides NICHT verhindert: dass PHPs Ausgabepuffer die Antwort überhaupt zwischenspeichert. Ein Handler, der eine große Datei per readfile() ausgibt, ohne die offenen Puffer vorher zu leeren, hält sie so oder so komplett im Speicher — das ist eine Eigenschaft von ob_start() und trifft jeden Puffer auf der Seite, nicht nur diesen.

Kein creationell_captcha_request_bypassed() (EO-10, bewusst): Die Obfuskation ist kein Zugangs-Gate, sondern eine Darstellungsänderung — sie lässt niemanden durch und hält niemanden auf. Der Content-Filter-Modus fragt den Bypass ebenso wenig ab; ihn nur hier zu verdrahten, hieße, aus einer Einstellung zwei Verhaltensweisen zu machen, je nach gewähltem Modus. Funktionaler Schaden entsteht nicht: der Decoder stellt die Adresse clientseitig wieder her.

Parameters
$obfuscator : EmailObfuscator

The obfuscator.

creationell_captcha_email_buffer_filter()

The buffer callback itself: decides whether this response gets rewritten and hands it to the obfuscator when it does.

creationell_captcha_email_buffer_filter(string $html, EmailObfuscator $obfuscator) : string

Bewusst eine eigene benannte Funktion statt einer Closure im ob_start(): Die beiden Weichen (EO-5 Content-Type, EO-4 Größengrenze) sind der Fix, und ein Test muss sie direkt aufrufen können. In der Closure waren sie nur über einen echten Request erreichbar — der einzige „Nachweis", der dann noch möglich war, prüfte den Default-Wert gegen sich selbst und wäre auch ohne die Weiche grün geblieben.

Parameters
$html : string

Der gepufferte Antwort-Body.

$obfuscator : EmailObfuscator

The obfuscator.

Return values
string —

Umgeschriebener oder unveränderter Body.

creationell_captcha_response_is_html()

Whether the response being buffered is (still) an HTML document.

creationell_captcha_response_is_html() : bool

EO-5: process_page() prüfte nie den Content-Type. Eine Nicht-HTML-Antwort, die zufällig <body…>, </body> und ein „@" enthielt — etwa ein von einem Mu-Plugin auf template_redirect ausgegebenes JSON mit HTML-Fragment —, wurde umgeschrieben und war danach kaputt.

Ein fehlender Content-Type gilt als HTML: template_redirect ist der Template-Pfad von WordPress, dessen Antwort per Definition das Theme rendert, und PHPs default_mimetype ist text/html. Die Prüfung entscheidet ausschließlich darüber, OB umgeschrieben wird — sie ist keine Sicherheitskontrolle, und ein „nein" ist immer die harmlosere Antwort.

Return values
bool

        
On this page

Search results