Heim  >  Artikel  >  Backend-Entwicklung  >  javascript – Regelmäßige PHP-Regeln zum Entfernen von uncodierten Steuerzeichen

javascript – Regelmäßige PHP-Regeln zum Entfernen von uncodierten Steuerzeichen

WBOY
WBOYOriginal
2016-10-10 11:55:541211Durchsuche

Als ich eine Website zur Überprüfung des Benutzernamens schrieb, bat ich einen Freund, der Penetration spielt, dies zu testen. . Dann wurde mir die Eingabe eines Steuerzeichens gegeben (obwohl es keine Rolle spielt, aber dennoch Auswirkungen hat. Es scheint, dass der reguläre Ausdruck auf sf nicht funktioniert. Außerdem, wie verwendet man Uncode in PHP Perl?
Testen Sie wie folgt:

<code class="php"><?php
    $str=json_decode('"ux\u202eDD"');
    var_dump($str);
    var_dump(preg_match('/\x202e/', $str));</code>

Übereinstimmung nicht möglich (Hinweis: u202e ist ein RLO-Steuerzeichen)
Verbotene Zeichen Test: Gong Lun Fa
Die Zeichenfolge ist RLO Gong Lun Fa
Es scheint, dass viele Lücken ausgenutzt werden durch Steuerzeichen?
Tieba hat blockierte Kontrollzeichen. Allerdings sind meine Fähigkeiten begrenzt und ich habe nicht den entsprechenden REX zur Steuerung von JS gefunden.
Ich habe SF um Hilfe gebeten.
PS: Der chinesische Benutzername kann nicht verwendet werden /^[x4e00-x9affw]{4,12}$/

Antwortinhalt:

Als ich eine Website zur Überprüfung des Benutzernamens schrieb, bat ich einen Freund, der Penetration spielt, dies zu testen. . Dann wurde mir die Eingabe eines Steuerzeichens gegeben (obwohl es keine Rolle spielt, aber dennoch Auswirkungen hat. Es scheint, dass der reguläre Ausdruck auf sf nicht funktioniert. Außerdem, wie verwendet man Uncode in PHP Perl?
Testen Sie wie folgt:

<code class="php"><?php
    $str=json_decode('"ux\u202eDD"');
    var_dump($str);
    var_dump(preg_match('/\x202e/', $str));</code>

Keine Übereinstimmung möglich (Hinweis: u202e ist ein RLO-Steuerzeichen)
Verbotene Zeichen Test: Gong Lun Fa
Die Zeichenfolge ist RLOGong Lun Fa
Es scheint, dass viele Lücken ausgenutzt werden durch Steuerzeichen?
Tieba hat blockierte Kontrollzeichen. Allerdings sind meine Fähigkeiten begrenzt und ich habe nicht den entsprechenden REX zur Steuerung von JS gefunden.
Ich habe SF um Hilfe gebeten.
PS: Der chinesische Benutzername kann nicht verwendet werden /^[x4e00-x9affw]{4,12}$/

Nachdem ich das PHP-Handbuch durchgeblättert hatte, fand ich das passende Muster,,, Chinesisch, a-zA-Z_, passendes reguläres Muster:
/[wx{4e00}-x{9aff}]{4,12}/u Test:

<code class="php"><?php
    $str=json_decode('"ux这\u202eわかぃまぃだDD"');
    var_dump($str);
    var_dump(preg_match('/^[\w\x{4e00}-\x{9aff}]{4,12}$/u', $str,$match));
    var_dump($match);</code>

Chinesisch und Japanisch sollten in Ordnung sein, schalten Sie einfach den UTF-8-Modus ein.

Im UTF-8-Modus darf „x{...}“ verwendet werden und der Inhalt in den geschweiften Klammern ist eine signifikante Hexadezimalziffer. Es interpretiert die angegebene Hexadezimalzahl als UTF-8-Zeichencode.

u (PCRE_UTF8)
Dieser Modifikator aktiviert eine zusätzliche Funktion, die mit Perl nicht kompatibel ist. Musterzeichenfolgen gelten als UTF-8. Dieser Modifikator ist ab PHP 4.1.0 für Unix und PHP 4.2.3 für Win32 verfügbar. PHP 4.3.5 beginnt mit der Überprüfung der UTF-8-Gültigkeit von Mustern.
Die Frage ist erledigt. Ich verstehe nicht, warum ich keine große Antwort gegeben habe.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn