• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь. Мобильный клиент для IOS находится в itunes по этой ссылке

Регулярные выражения - методы защиты

03.04.2018
22
17
#1
Hello user, welcome wrold programming.

С утра встал, и написал пару методов защиты, кому интересно можете взять и модифицировать.

Login
'/^([a-zA-Z0-9]{2,4})([\w@]{5,8})$/'
Для E-Mail
'/^(\w{1,10}[\.]?\w{0,10})@(\w{1,10}[\.]?\w{0,10})[\.]([a-zA-Z]{2,4})$/'
Мобильный номер формат RU
'/^([+7|8])+[\d]{10}$/'
IPv4
((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
URL
'/^(http?:[\/]{2})((w){3}\.[\w]+)\.([\w]{2,7})$/'
Пароль
'(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$ '


Чтобы Вы тут изменили?


Начинающим программистом я советую изучить шаблоны регулярных выражений.
Вы даже представить не можете, какой это механизм.
 
Последнее редактирование:

Iskus

Премиум
13.11.2017
268
324
#2
А зачем ты это писал, ты изобретать велосипед. В html5 даже типы полей есть с учётом валидации, email, phone... и т.д. Да и есть эталонные примеры таких регулярное, проверенные временем, так сказать, а то что ты регулярки подучил это молодец, за это респект, мало кто здесь их умеет использовать, а большинство вообще не знает что это такое.
[automerge]1522857422[/automerge]
Не буду критиковать, но удали их, они слишком далеки от идеальных, https ?
[automerge]1522857986[/automerge]
Пусть будет здесь
 
Последнее редактирование:
03.04.2018
22
17
#3
html5 даже типы полей есть с учётом валидации, email, phone...
Знаешь, то что ты написал неверно, так как их можно запросто поменять элементарно F12. И вместо mail, ставить text и вот бах.

Второе , ты не прав на картинке обозначено для даты вот такое регулярное выражение как
регулярное выражение на картинке обозначено так -> (\d{1,2}\/\d{1,2}\/\d{4}) он соотвествует неверной дате таким как 33.33.9999
Вот и опять бах.

А я говорю что нельзя смотреть на картинки, а надо самому решать, и вот мое решение для даты
(((0|1){1}[\d]{1})|(2[\d]{1})|(3(0|1){1}))(\/|:|-)(((0)[^0]{1})|(1(0|1|2){1}))(\/|:|-)(19|20){1}[\d]{2} вот мое решение
он соотвествует именно датам рождения, то есть здесь вот такое решение 33.33.9999 не прокатит
 
Последнее редактирование:

Iskus

Премиум
13.11.2017
268
324
#4
А я говорю, что изобретать велосипед это очень нехорошо, и то что ты здесь пишешь, я изучил ещё лет 10 назад, или ты думаешь до тебя никто не догадался делать валидацию полей на сервере? Хорошо твой урл не пропустит ссылки вида (
Для просмотра контента необходимо: Войти или зарегистрироваться
. или ты не слышал о таких? Кто же тебя такому бреду то научил?)) Твои регулярки никуда не годятся, а картинки, как ты выразился, существуют для того чтобы ты тратил свое время на полезные действия , а не на всякую х... Когда выучишь MVC, обязательно начни писать защищённый php-фреймворк с детскими ошибками, может это тоже важнее картинок...
[automerge]1522870925[/automerge]
F12 на сколько я помню это вызов в Винде у IE инструментов разработчика?))) Вот за насмешил)))) я для подделки запросов браузер не использую)))
[automerge]1522870946[/automerge]
Да и Винду вообще не использую)))
[automerge]1522871114[/automerge]
Вот тебе замечательный
Для просмотра контента необходимо: Войти или зарегистрироваться
по регуляркам, лучшее что есть по ним в сети.
 
Последнее редактирование:
03.04.2018
22
17
#5
я для подделки запросов браузер не использую)))
Как раз таки и используются, любой взлоумышленник впервую очередь начинает лезьт в форумы, где есть именно отправка,и начинает читать html код в надежде его подменить, к твоему сведению данные и отправятся, а то что ты учил 10лет тому назад все устарело).

Да еще то что на картинке не правильно, советую почитать на сайте хабр, там про эту картинку уже говорили, кулц ты наш хакер :-D
(((0|1){1}[\d]{1})|(2[\d]{1})|(3(0|1){1}))(\/|:|-)(((0)[^0]{1})|(1(0|1|2){1}))(\/|:|-)(19|20){1}[\d]{2} вот мое решение
 

Iskus

Премиум
13.11.2017
268
324
#6
Как раз таки и используются, любой взлоумышленник впервую очередь начинает лезьт в форумы, где есть именно отправка,и начинает читать html код в надежде его подменить, к твоему сведению данные и отправятся, а то что ты учил 10лет тому назад все устарело).

Да еще то что на картинке не правильно, советую почитать на сайте хабр, там про эту картинку уже говорили, кулц ты наш хакер :-D
(((0|1){1}[\d]{1})|(2[\d]{1})|(3(0|1){1}))(\/|:|-)(((0)[^0]{1})|(1(0|1|2){1}))(\/|:|-)(19|20){1}[\d]{2} вот мое решение
малыш , ты укуренный или под чем ты, или ты тупо решил пороллить?? Ты читаешь что тебе пишут в ответ? Я 10 ЛЕТ ЗАНИМАЮСЬ НАПИСАНИЕМ СОФТА ПОД WEB! 3 из них плотно увлекаюсь вопросами безопасности со стороны нападения, так как до этого безопасность рассматривал только со стороны защиты. Что ты здесь пишешь и для кого? Если тебе нужег совет, спроси, если ты знаешь то чего мы не знаем, расскажи, но не неси какую-то охинею. Я тебе повторяю, выучил регулярки - молодец, мы все за тебя очень рады, но твои велосипедв здесь никому не нужны, так понятно? Не о чем писать, тогда просто читай, но не разводи срач на форуме всякими лишними, ненужными ветками. Хочешь пообщаться с кем-то на тему регулярных выражений - создай тему в соответствующем разделе с соответствующим названием и не спорь с людьми, которые намного опытнее тебя, а слушай чо ебе говорят, у ебя опыта в разработке и года нет, поэтому не надо спорить, не дорос еще.
[automerge]1522886181[/automerge]
короче, лови:
Код:
Mac-адрес:
    ([0-9a-fA-F]{2}([:-]|$)){6}$|([0-9a-fA-F]{4}([.]|$)){3}

Валидация для номера телефона:
    ^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$

Номер кредитки:
    [0-9]{13,16}

ICQ:
    ([1-9])+(?:-?\d){4,}

Набор из букв и цифр (латиница):
    ^[a-zA-Z0-9]+$

Набор из букв и цифр (латиница + кириллица):
    ^[а-яА-ЯёЁa-zA-Z0-9]+$

Домен (например abcd.com):
    ^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$

IPv4:
    ((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)

IPv6:
    ((^|:)([0-9a-fA-F]{0,4})){1,8}$

Имя пользователя (с ограничением 2-20 символов, которыми могут быть буквы и цифры, но первый символ обязательно буква):
    ((^|:)([0-9a-fA-F]{0,4})){1,8}$

Пароль (Строчные и прописные латинские буквы, цифры):
    ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$

Пароль (Строчные и прописные латинские буквы, цифры, спецсимволы. Минимум 8 символов):
    (?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$

Дата в формате YYYY-MM-DD:
    [0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])

Более строгая проверка:
    (19|20)\d\d-((0[1-9]|1[012])-(0[1-9]|[12]\d)|(0[13-9]|1[012])-30|(0[13578]|1[02])-31)

Дата в формате DD/MM/YYYY:
    (0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d

Целые числа и числа с плавающей точкой (разделитель точка):
    \-?\d+(\.\d{0,})?

UUID:
    ^[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}$

Широта или долгота:
    -?\d{1,3}\.\d+

E-mail:
    ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$

URL на латинице. Если нужно распознавать и кириллические домены, необходимо изменить все «a-z0-9» на «а-яёa-z0-9» и добавить в список доменных зон «рф»:
    ~^(?:(?:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}(?::[a-
    z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:ru|su|com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:/[a-z0-
    9.,_@%&?+=\~/-]*)?(?:#[^ '\"&]*)?$~i

Время в формате HH:MM:SS:
    ^([0-1]\d|2[0-3])(:[0-5]\d){2}$

Валидация шестнадцатеричного представления цвета:
    ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$

ну или так еще я проверял:
    color: /^#[0-9A-F]{6}$/i,
    email: /^[a-zA-Z0-9.!#$%&’*+\/=?\^_`{|}~\-]+@[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*$/,
    isoDate: /^(\d{4})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/,
    number: /^-?\d*\.?\d*$/,
    time: /^([01][0-9]|2[0-3])(:([0-5][0-9])){2}$/,
    url: /^\s*https?:\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?\s*$/
[automerge]1522890897[/automerge]
а то внатуре на хабре статью прочитают и мнят себя сверх программистами - мегахакерами))) иди учись лучше , а не херней срадай, регулярописец великий)
[automerge]1522891032[/automerge]
только я эти регулярки уже давно не юзаю, потому что написана куча замечательных валидаторов под любые платформы и под любые нужды, поэому изобретением велосипедов серьезные люди не занимаются, они на них катаются!
[automerge]1522891191[/automerge]
P.S. И открою страшную тайну, только никому не говори :eek::censored:. Не всё что написано на хабре - правда! Во как! Пока, удачи.
 
Последнее редактирование:

Citizen0

Well-known member
07.02.2017
159
179
#7
(((0|1){1}[\d]{1})|(2[\d]{1})|(3(0|1){1}))(\/|:|-)(((0)[^0]{1})|(1(0|1|2){1}))(\/|:|-)(19|20){1}[\d]{2} вот мое решение
он соотвествует именно датам рождения,
- Дата рождения Пушкина?
- 06:06:1799
- Нет, согласно регулярке.
Для E-Mail
'/^(\w{1,10}[\.]?\w{0,10})@(\w{1,10}[\.]?\w{0,10})[\.]([a-zA-Z]{2,4})$/'
Берем временную почту xaviwaxy@nada.email
Регулярка говорит, что это не email
С утра встал, и написал пару методов защиты
Регулярка для пароля по какому принципу была написана?
Кстати тут человек встал на 4 года раньше. Сравните регулярки.

Да и зачем мне это, если в php (Вы же с ним работаете) есть
Для просмотра контента необходимо: Войти или зарегистрироваться

И вообще от кого мы тут защищаемся? От пользователя, который не смог зарегистрироваться по причине того, что почта не подходит или хочет логин более 12 символов да еще с пробелами?
 
Симпатии: Понравилось r0hack

PingVinich

Bug hunter
Gold Team
19.03.2017
143
385
#8
Как раз таки и используются, любой взлоумышленник впервую очередь начинает лезьт в форумы, где есть именно отправка,и начинает читать html код в надежде его подменить, к твоему сведению данные и отправятся, а то что ты учил 10лет тому назад все устарело).

Да еще то что на картинке не правильно, советую почитать на сайте хабр, там про эту картинку уже говорили, кулц ты наш хакер :-D
(((0|1){1}[\d]{1})|(2[\d]{1})|(3(0|1){1}))(\/|:|-)(((0)[^0]{1})|(1(0|1|2){1}))(\/|:|-)(19|20){1}[\d]{2} вот мое решение
Ты слышал о перехватывающих прокси? Это твои методы устарели 10 лет назад.
 
Вверх Снизу