- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
/**
* formHostnameRule: правило, проверяющее имя хоста
*
* @package system
* @subpackage forms
* @version 0.1.1
*/
class formHostnameRule extends formAbstractRule
{
private $validTlds = array(
'ac', 'ad', 'ae', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao',
'aq', 'ar', 'arpa', 'as', 'at', 'au', 'aw', 'ax', 'az', 'ba', 'bb',
'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo',
'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cat', 'cc', 'cd',
'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop',
'cr', 'cu', 'cv', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do',
'dz', 'ec', 'edu', 'ee', 'eg', 'er', 'es', 'et', 'eu', 'fi', 'fj',
'fk', 'fm', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh',
'gi', 'gl', 'gm', 'gn', 'gov', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu',
'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il',
'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm',
'jo', 'jobs', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kr', 'kw',
'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu',
'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mg', 'mh', 'mil', 'mk', 'ml', 'mm',
'mn', 'mo', 'mobi', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum', 'mv',
'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net', 'nf', 'ng',
'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'org', 'pa', 'pe',
'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'pro', 'ps', 'pt',
'pw', 'py', 'qa', 're', 'ro', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd',
'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr',
'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td', 'tf', 'tg', 'th', 'tj',
'tk', 'tl', 'tm', 'tn', 'to', 'tp', 'tr', 'travel', 'tt', 'tv', 'tw',
'tz', 'ua', 'ug', 'uk', 'um', 'us', 'uy', 'uz', 'va', 'vc', 've',
'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'yu', 'za', 'zm',
'zw'
);
gost 18.10.2020 12:27 # 0
Desktop 18.10.2020 12:32 # +1
OCETuHCKuu_nemyx 18.10.2020 12:35 # 0
http://govnokod.ru/25607
gost 18.10.2020 12:41 # 0
oaoaoammm 18.10.2020 13:21 # 0
https://pypi.org/project/tld/
gost 18.10.2020 13:32 # +4
Единственный правильный способ валидировать домен — рагуляркой «.+». Единственный гарантированный — попробовать его отрезольвить (только это тоже сложно:надо ещё уметь отличать отсутствие A-записи от NXDOMAIN, например).
Это как с «e-mail»: там правильный способ — это рагулярка «.+@.+», а гарантированный — послать на заданный адрес письмо с подтверждением.
bootcamp_dropout 18.10.2020 13:37 # 0
есть https://tools.ietf.org/html/rfc3696 в котором написано каким домен не может быть, все остальное приемлемо считать валидным доменом
bormand 18.10.2020 13:42 # 0
Как это противоречит рагулярке госта?
bootcamp_dropout 18.10.2020 13:49 # +1
oaoaoammm 18.10.2020 14:12 # 0
«Public Suffix List — проект Mozilla Foundation по созданию каталога публичных суффиксов доменов, используемых в сети Интернет. Ранее публичные суффиксы называли эффективными доменами верхнего уровня (effective top-level domain, effective TLD, eTLD). Список был создан в 2007 году Jo Hermans как дополнение к списку TLD от IANA. В настоящее время поддержкой каталога занимается Mozilla Foundation для целей повышения безопасности браузера Firefox. Сам список доступен под открытой лицензией Mozilla Public License и используется браузерами Chrome и Opera»
И, в отличие от пхп-макаки, мозилла будет этот лист исправно обновлять. Или тебе не нравится сам подход, что нужно этот лист переодически обновлять и у себя?
Так там это удобно сделано, можно сразу из питухона позвать update_tld_names(). Так что это решение более точное, чем регулярка.
bormand 18.10.2020 14:12 # 0
Именно так.
> update_tld_names
А где он их хранит?
Fike 18.10.2020 14:15 # +1
> Именно так.
Нужен https://api.mysql-real-public-suffix-list.xyz
bormand 18.10.2020 14:18 # 0
Я понимаю зачем проверять доступность какого-то протокола на этом домене. Или работоспособность ссылки. Или вхождение домена в некий вайтлист. А название домена то нахуя?
Fike 18.10.2020 14:20 # 0
bormand 18.10.2020 14:22 # +1
Бигдатобляди должны страдать.
Fike 18.10.2020 14:25 # 0
Fike 18.10.2020 14:29 # +1
- как определять, какие куки кому могут принадлежать (с классическим .co.uk это не так очевидно)
- как определить/вычислить поддомен (если, например, клиент со своего адреса сделал пару CNAME на твой SaaS, а тебе нужно админку для этого лопуха держать на поддомене)
Fike 18.10.2020 14:21 # +1
накаркал, блядь
oaoaoammm 18.10.2020 14:20 # 0
Видимо, хранит в каком-то файлике локальном, а обновляет с сайта. Всё гениальное просто )))
> хранить лист
А чем это лучше чем резолвить на каждый чих?
bormand 18.10.2020 14:21 # +1
А, NAMES_LOCAL_PATH.
gost 10.12.2020 16:19 # +2
oaoaoammm 10.12.2020 16:31 # 0
Короче либа говно, но всё равно лучше чем пхп-решения.
bormand 10.12.2020 16:35 # +1
oaoaoammm 10.12.2020 16:39 # 0
bormand 10.12.2020 16:41 # 0
oaoaoammm 10.12.2020 16:44 # 0
> Последняя версия: 2.7.2 (21 марта 2020)
Он даже круче котлина и всяких других штук, если тоже работает с жвм и интегрируется с джавой.
MAKAKA 10.12.2020 17:19 # 0
> даже круче котлина и вся
чем круче? тем, что не имеет статической типизации и не компилируеься?
oaoaoammm 10.12.2020 17:24 # 0
Такой красивый код получится, если намешать скриптушню и вербозную джаву, ммммммм делишес.
MAKAKA 10.12.2020 17:27 # 0
Что компилируется? Питон?
>а отсутствие статической типизации – это плюс,
Такой плюс, что гнидо аж mypy напили
>сли намешать скриптушню и вербозную джаву, ммммммм делишес.
Именно потому я за "Груви": там можно мешать компиляцию и инвокдайнемик
зы: еще раз напоминаю, что писать на py27 в 2020 существует -1 причина, или может чуть больше
oaoaoammm 10.12.2020 17:36 # 0
Питон тоже можно компилировать, да.
https://www.jython.org/jython-old-sites/archive/21/docs/jythonc.html
А «груви» я не знаю, но он очень прикольно выглядит, я тоже за него как за скриптушню для джавы.
MAKAKA 10.12.2020 17:38 # 0
офигеть:) А груви можно налету
oaoaoammm 10.12.2020 17:41 # 0
MAKAKA 10.12.2020 17:46 # +1
OCEHHuu_nemyx 18.10.2020 14:25 # +3
«Public Suffix List» предназначен для другого. Он для политики передачи кук в браузере.
Например, если я поставлю куку для «ru», то она будет валидна и для «mail.ru», и для «yandex.ru». Чтобы этого не произошло, в «Public Suffix List» добавляют домен «ru». Это означает: «Не применять куки для «ru» к поддоменам». А вот к «disk.yandex.ru» браузер может применить куку от «yandex.ru», потому что «yandex.ru» нет в «Public Suffix List».
Т. е. в «Public Suffix List» могут отсутствовать валидные домены первого уровня (потому что их админ разрешил передавать куки поддоменам), но могут присутствовать домены второго и более высоких уровней. Для проверки почтовых ящиков на валидность такой список бесполезен.
Для проверки корневых доменов в почтовых ящиках на валидность нужен другой список, а именно этот:
ftp://ftp.internic.net/domain/root.zone
gost 18.10.2020 14:28 # 0
oaoaoammm 18.10.2020 14:46 # +1
***
Author
Artur Barseghyan <[email protected]>
bormand 18.10.2020 14:29 # +2
Блядь, какое же всё-таки дерьмо этот веб...
Сука, ну почему нельзя было просто явно указывать для каких доменов эта кука? И явно указывать, от каких доменов я согласен принимать куки. А не делать какие-то ебанутые эвристики.
З.Ы. Видимо из-за этого гитхабу и пришлось унести все недоверенные юзерские данные на левый домен вообще в другой зоне.
OCEHHuu_nemyx 18.10.2020 14:38 # +2
bormand 18.10.2020 14:48 # +3
1) foo.com публикует куку для bar.com.
2) При запросе на bar.com браузер отдаёт ему эту куку вместе с именем домена, который её ставил.
3) bar.com видит, что кука от foo.com и принимает её.
Никакой магии, никаких списков TLD, никаких проблем с кросс-доменностью...
З.Ы. Хотя криворукие макаки конечно же обосрутся и опубликуют куку на все *.com, а потом ещё и примут куки от всех *.com
guest8 18.10.2020 14:57 # −999
gost 18.10.2020 15:36 # 0
Кстати да, чтобы сделать «hsts preload» на домен example.com, сервер обязательно должен отвечать «includeSubDomains» с соответствующими последствиями. «Narod.ru» негодует.
guest8 18.10.2020 15:39 # −999
OCEHHuu_nemyx 18.10.2020 15:07 # +1
guest8 18.10.2020 15:08 # −999
OCEHHuu_nemyx 18.10.2020 15:29 # 0
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie2
https://tools.ietf.org/html/rfc2965
Но больше никто этот проект не поддержал, и его отменили.
А потом вместо исправления недостатков протокола обмена куками налепили кучу новых: localStorage, globalStorage, sessionStorage, indexedDB, Web SQL Database...
Fike 18.10.2020 15:18 # +1
Это ты еще не смотрел как в браузере новую куку объявить!
oaoaoammm 18.10.2020 14:35 # 0
А вот и биндинг к «РНР». Надеюсь, это не то же самое, что в говнокоде, потому что, вроде бы, эта штука выглядит очень даже солидно.
gost 18.10.2020 14:39 # +2
Блядь, ну почему пхпшники — такое говно?
bormand 18.10.2020 14:40 # +3
Fike 18.10.2020 14:46 # +1
OCEHHuu_nemyx 18.10.2020 14:54 # 0
http://web.archive.org/web/20120111154409/data.iana.org/TLD/tlds-alpha-by-domain.txt
А потом бабахнуло, и список TLD стал расти, как снежный ком.
guest8 18.10.2020 14:59 # −999
Fike 18.10.2020 15:24 # +3
guest8 18.10.2020 15:29 # −999
Fike 18.10.2020 15:38 # 0
guest8 18.10.2020 15:43 # −999
Fike 18.10.2020 15:46 # +1
guest8 18.10.2020 15:48 # −999
Fike 18.10.2020 15:49 # +1
Ты в курсе что только подать заявку на новый TLD стоит 185k баксов? И что они с каждого домена гребут что-то порядка двадцти центов?
guest8 18.10.2020 15:52 # −999
Fike 18.10.2020 15:53 # 0
guest8 18.10.2020 15:57 # −999
Fike 18.10.2020 15:39 # 0
а пусть ICANN ебется, я ж не говорю "раздайте народу бесплатно", пусть покупают себе домены, как и сейчас
bormand 18.10.2020 15:43 # +1
Fike 18.10.2020 15:48 # 0
Сейчас понятно, что так уже не сделать, но если бы в пору "нахуй ваш интернет нам не нужон" всё так организовали - деваться было бы некуда, и роскомнадзор наконец-то бы соснул как следует.
guest8 18.10.2020 15:45 # −999
Fike 18.10.2020 15:51 # 0
guest8 18.10.2020 15:54 # −999
Fike 18.10.2020 21:38 # 0
guest8 18.10.2020 14:33 # −999
bormand 18.10.2020 14:33 # 0
OCEHHuu_nemyx 18.10.2020 14:39 # 0
guest8 18.10.2020 14:49 # −999
guest8 18.10.2020 14:55 # −999
OCEHHuu_nemyx 18.10.2020 14:59 # 0
guest8 18.10.2020 15:03 # −999
OCEHHuu_nemyx 18.10.2020 15:06 # 0
guest8 18.10.2020 15:07 # −999
ECEHuHCKuu_nemyx 18.10.2020 21:18 # 0
guest8 18.10.2020 14:26 # −999
guest8 18.10.2020 16:26 # −999
bormand 18.10.2020 16:29 # 0
guest8 18.10.2020 16:31 # −999
Fike 18.10.2020 16:34 # +1
guest8 18.10.2020 16:35 # −999
_PHP_ 18.10.2020 23:54 # 0
ECEHuHCKuu_nemyx 19.10.2020 00:58 # 0