Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Valentin Nechayev                    2:5020/400     22 Dec 2002  13:05:11
 To : Artem Chuprina
 Subject : Re: regexp email_check
 -------------------------------------------------------------------------------- 
 
 >>> Artem Chuprina wrote:
 
 AC> Та ты гонишь. Вот те самые вышеуказанные адреса
 AC> sentto-8585816-249-1040417837-ran=home.ran.pp.ru@returns.groups.yahoo.com
 AC> eriol.ran.pp.ru!eriol@eriol.ran.pp.ru
 
 Действительно гоню. Hо не во всём.
 Ты приводишь контрпримеры из несколько другой постановки задачи. Проверка
 адреса, задаваемого пользователем, проверка адреса вообще, проверка адреса
 в конверте - разные задачи даже в случае полной реализации стандарта.
 Я исходил из задачи проверки адреса, вводимого пользователем как контактный,
 и вопрос "покажи мне хоть один пример" ставил именно из этого уточнения.
 Sorry, его следовало сформулировать прежде чем давать ответ.
 Пример с апострофом от Ruslan Bondarev - хороший контрпример. Твои примеры -
 не настолько. Адрес с '!' - специфическая форма обратного адреса, видимого
 только почтовой системе (к тому же неправильно сформированного - я правильно
 понимаю, что там UUPC/Extended? Или это извращённо настроенный юникс?);
 где-то есть ещё UUCP сети с адресами вида uunet!isc!paul.
 '=' - было бы тоже нереальным, но бывают запросы типа 'прислать reply на
 subscribe-349857439857349574938-vasya=pupkin.com', так что тут случай сложнее.
 Hо таких контактных адресов - я не видел.
 
 Если же собрать условия воедино:
 1. Проверка не должна допускать адреса со спорными символами (пробелы,
 кавычки, прочие шелловые метасимволы, NUL, символы верхней половины ascii),
 2. Проверка не должна допускать адреса, которые могут быть поняты не как адреса
 или не как один адрес (пробел, табуляция внутри, '-' вначале),
 3. Проверка должна контролировать корректность доменной части,
 то с добавкой '+', '=', '%', '!' и ещё ряда символов - получится достаточно
 близкое к тому, что я выдал вначале. Я сейчас глянул таблицу: следует
 допустить только "!#%+-./:=^_~", и то - не первым символом.
 
 Я пропустил '+', '=' как законные и не вызывающие никаких проблем,
 '%' и '!' как такие же, которые, правда, не относятся к specials, но
 употребляются в этом смысле; и ещё можно наскрести до десятка символов,
 не вызывающих проблемы при типичных каналах передачи.
 Hо, обрати внимание, о чём я говорил на принципиальном уровне.
 Если у тебя весь софт гарантированно написан корректно, и всё всегда правильно
 разбирает, передаёт, заворачивает, то у тебя не будет проблем с любыми
 последовательностями символов, независимо от того, являются они правильными
 адресами или нет ;))
 В своём коде при передаче в шелл я аккуратно эскейплю все подозрительные
 символы.
 В то же время, сокращённая проверка имеет два преимущества -
 1) пишется и работает крайне быстро
 2) спасает от проблем на кривой передаче через шелл, через каналы чтения/записи
 (которые могут, например, перевод строки понять как конец адреса),
 и через любые другие каналы, где не соблюдены условия передачи.
 А что таких каналов и кривых средств - большинство - в этом можно убедиться
 не ставя многолетних тестов ;))
 И ей соответствует настолько подавляющее количество адресов, что... хм...
 для альфа-бета версий этого, как правило, достаточно - есть возможность
 сосредоточиться на более других вопросах.
 
 Если у тебя есть гарантия правильности передачи по всей цепочке - ok.
 Если можешь сделать полный правильный разбор адреса - тоже ok. Кто возражать
 будет? ;)) Hо пока этого нет - лучше подстраховаться.
 
 Чай я таки съем;)) но не по неправильности идеи, а потому, что не должен
 был пропустить случаи '+', '=' и ряда прочих, это совершенно недопустимая
 невнимательность.
 А вот апостроф, в ещё одном примере - это опасное средство и пока нет
 гарантии его правильной передачи - лучше не пускать.
 С адекватной диагностикой, естественно. Заранее извинения Руслану Бондареву,
 его адресату не повезло, по крайней мере пока не будет проверены все
 каналы передачи адресов.
 -netch-
 --- ifmail v.2.15dev5
  * Origin: Dark side of coredump (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 regexp email_check   Sergey Nepsha   17 Dec 2002 02:28:15 
 Re: regexp email_check   Artem Chuprina   17 Dec 2002 16:00:57 
 regexp email_check   Timur Vafin   18 Dec 2002 17:35:28 
 Re: regexp email_check   Andrey Sapozhnikov   18 Dec 2002 17:59:01 
 Re: regexp email_check   Timur Vafin   18 Dec 2002 20:33:31 
 regexp email_check   Denis Knyazev   18 Dec 2002 21:47:12 
 Re: regexp email_check   Alexey Mahotkin   18 Dec 2002 23:04:07 
 Re: regexp email_check   Artem Chuprina   19 Dec 2002 15:19:52 
 Re: regexp email_check   Andrei Protasovitski   20 Dec 2002 02:03:37 
 Re: regexp email_check   Artem Chuprina   20 Dec 2002 02:36:08 
 Re: regexp email_check   Andrei Protasovitski   20 Dec 2002 03:14:41 
 Re: regexp email_check   Artur Penttinen   20 Dec 2002 12:05:56 
 Re: regexp email_check   Protasovitski Andrei   20 Dec 2002 17:05:14 
 regexp email_check   Serguei Trouchelle   20 Dec 2002 17:26:56 
 Re: regexp email_check   Andrei Protasovitski   21 Dec 2002 01:41:38 
 regexp email_check   Serguei Trouchelle   24 Dec 2002 17:47:38 
 Re: regexp email_check   Artem Chuprina   20 Dec 2002 19:24:31 
 Re: regexp email_check   Alexey Mahotkin   20 Dec 2002 19:27:40 
 Re: regexp email_check    Michael B. Babakov   20 Dec 2002 23:54:21 
 Re: regexp email_check   Artem Chuprina   20 Dec 2002 14:10:38 
 Re: regexp email_check   Igor Solovyoff   20 Dec 2002 13:12:57 
 Re: regexp email_check   Valentin Nechayev   21 Dec 2002 13:34:20 
 Re: regexp email_check   Victor Wagner   21 Dec 2002 15:06:05 
 Re: regexp email_check   Valentin Nechayev   21 Dec 2002 15:31:42 
 regexp email_check   Ruslan Bondarev   21 Dec 2002 17:20:47 
 Re: regexp email_check   Artem Chuprina   21 Dec 2002 23:43:52 
 Re: regexp email_check   Valentin Nechayev   22 Dec 2002 13:05:11 
 Re: regexp email_check   Artem Chuprina   22 Dec 2002 18:00:17 
 Re: regexp email_check   Artur Penttinen   23 Dec 2002 12:38:36 
 Re^2: regexp email_check   Dmitry Provodnikov   24 Dec 2002 19:37:14 
 Re: regexp email_check   Valentin Nechayev   24 Dec 2002 22:40:59 
 Re: regexp email_check   Artem Chuprina   25 Dec 2002 00:03:18 
 Re: regexp email_check   Valentin Nechayev   25 Dec 2002 10:08:49 
 Re^2: regexp email_check   Dmitry Provodnikov   25 Dec 2002 13:26:20 
 Re: regexp email_check   Valentin Nechayev   25 Dec 2002 11:31:58 
 Re: regexp email_check   Sergey Nepsha   25 Dec 2002 15:21:54 
Архивное /ru.perl/736856024ffb.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional