Regex для фильтрации адресов электронной почты в URL - PullRequest
1 голос
/ 06 ноября 2019

Мне нужно отфильтровать любые спам-запросы в нашем URL с адресом электронной почты или какой-либо личной информацией.

Например: если кто-то введет URL-адрес

www.mydomain.com/en-us?email=abc@gmail.com

itследует перенаправить на

www.mydomain.com / en-us? email =

[Используйте регулярное выражение для сопоставления с образцом и удалите его], в основном это должно сохранитьURL-адрес как есть и удалить адрес электронной почты

другой пример

Перенаправление

www.mydomain.com / en-us / sompePage / SomeStructure? query = abc.gmail.com

до

www.mydomain.com / en-us / sompePage / SomeStructure? query =

Это то, что я пытался:

(http|https)://mydomain.com/(^((?!\.)[\w-_.]*[^.])(@\w+)(\.\w+(\.\w+)?[^.\W])$, но выдает ошибку Назад история и рассуждения, если интересно

Мы посмотрели на аналитику Google и поняли, что наш веб-сайтполучение со случайным адресом электронной почты со случайной строкой запроса. Но Google помечает их как хранение личной информации и, следовательно, считает это нарушением политики. Sl, мы пытаемся поместить некоторое регулярное выражение в akamai, чтобы эти запросы никогда не попадали на сервер. (У нас также есть запасной javascript для обработки того же)

Ответы [ 4 ]

0 голосов
/ 07 ноября 2019

РЕДАКТИРОВАТЬ:

Если присмотреться, я забыл, что мы добавили совпадение с регулярными выражениями. Наш механизм RegEx по умолчанию использует синтаксис PCRE, поэтому теоретически вы можете выполнить полное сопоставление во всей строке запроса: match on regular expression

Перед выполнением фиксации дважды проверьте и протестируйте на платформе Staging. И дважды проверьте RegEx. Я взял это из emailregex.com и сам не проверял.

ОРИГИНАЛ:

С Akamai инструмент Property Manager позволяет вамсделать это с новым правилом. Вы должны проверить документацию и протестировать ее перед развертыванием или проконсультироваться со своей командой по учетным записям для более конкретных вопросов.

В правиле вы захотите добавить соответствие для строки запроса, например, так: property manager with new rule and match

Оттуда добавьте поведение, чтобы платформа Akamai делала то, что вы хотите. Если это простое перенаправление, то вы можете использовать поведение Redirect и полностью удалить строки запроса. Примерно так: redirect behavior

Как сказано в информационном окне, этот конкретный вариант использования может быть лучше обработан с помощью Redirector Cloudlet. Но есть много вещей, которые вы можете сделать, если вы сопоставили эту строку запроса.

0 голосов
/ 07 ноября 2019

Ну, я прочитал ваш вопрос еще раз и понял, что, вероятно, akamai допускает только модификацию регулярных выражений и не включает в себя полноценные Perl-скрипты.

Тогда, вероятно, то, что вы ищете, будет s|=.*|=| или s/=.*/=/

use strict;
use warnings;

while( <DATA> ) {
    s|=.*|=|;
    print;
}

__DATA__
www.mydomain.com/en-us?email=abc@gmail.com
www.mydomain.com/en-us/sompePage/SomeStructure?query=abc.gmail.com

Но, опять же, этот метод не идентифицирует e-mail в запросе. Ваш вопрос не является полным, чтобы вы могли полностью оценить проблему.

Вы можете попробовать s/[\w\d\.\-]+@[\w\d\.]+// как электронная почта соответствующее замещающее регулярное выражение.

0 голосов
/ 07 ноября 2019

Код Email :: Valid содержит регулярное выражение для проверки адреса электронной почты . Это гораздо сложнее, чем думает большинство людей: -)

0 голосов
/ 07 ноября 2019

Ваши примеры не очень хороши для объяснения проблемы. Основная проблема заключается в том, как определить «почту», которую вы хотите удалить.

Я бы выбрал другой подход:

use strict;
use warnings;

use Data::Dumper;

my $debug = 0;

my %url;

while( <DATA> ) {
    print if $debug;

    chomp;

    m|(https{0,1})://([\w\d\.]+)/(.*)\?(.*)|;

    @url{qw(proto dn path query)} = ($1,$2,$3,$4);

    print Dumper(\%url) if $debug;

    # now do whatever your heart desire with $url{query}

    $url{query} =~ /(.*=)/;
    $url{query} = $1;

    print Dumper(\%url) if $debug;

    printf "%s://%s/%s/%s\n",
                $url{proto},    # protocol
                $url{dn},       # domain name
                $url{path},     # directory path
                $url{query};    # query

}

__DATA__
http://www.example.org/en-us?email=abc@gmail.com
https://www.example.org/en-us/sompePage/SomeStructure?query=abc.gmail.com
...