• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

M

maxoun

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]).*$ '


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


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

Iskus

Green Team
13.11.2017
287
468
BIT
0
А зачем ты это писал, ты изобретать велосипед. В html5 даже типы полей есть с учётом валидации, email, phone... и т.д. Да и есть эталонные примеры таких регулярное, проверенные временем, так сказать, а то что ты регулярки подучил это молодец, за это респект, мало кто здесь их умеет использовать, а большинство вообще не знает что это такое.
[automerge]1522857422[/automerge]
Не буду критиковать, но удали их, они слишком далеки от идеальных, https ?
[automerge]1522857986[/automerge]
Пусть будет здесь
regexp.png
 
Последнее редактирование:
M

maxoun

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

Green Team
13.11.2017
287
468
BIT
0
А я говорю, что изобретать велосипед это очень нехорошо, и то что ты здесь пишешь, я изучил ещё лет 10 назад, или ты думаешь до тебя никто не догадался делать валидацию полей на сервере? Хорошо твой урл не пропустит ссылки вида ( . или ты не слышал о таких? Кто же тебя такому бреду то научил?)) Твои регулярки никуда не годятся, а картинки, как ты выразился, существуют для того чтобы ты тратил свое время на полезные действия , а не на всякую х... Когда выучишь MVC, обязательно начни писать защищённый php-фреймворк с детскими ошибками, может это тоже важнее картинок...
[automerge]1522870925[/automerge]
F12 на сколько я помню это вызов в Винде у IE инструментов разработчика?))) Вот за насмешил)))) я для подделки запросов браузер не использую)))
[automerge]1522870946[/automerge]
Да и Винду вообще не использую)))
[automerge]1522871114[/automerge]
Вот тебе замечательный по регуляркам, лучшее что есть по ним в сети.
 
Последнее редактирование:
M

maxoun

я для подделки запросов браузер не использую)))
Как раз таки и используются, любой взлоумышленник впервую очередь начинает лезьт в форумы, где есть именно отправка,и начинает читать 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

Green Team
13.11.2017
287
468
BIT
0
Как раз таки и используются, любой взлоумышленник впервую очередь начинает лезьт в форумы, где есть именно отправка,и начинает читать 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

Green Team
07.02.2017
203
228
BIT
0
(((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

Технарь
Green Team
19.03.2017
138
505
BIT
0
Как раз таки и используются, любой взлоумышленник впервую очередь начинает лезьт в форумы, где есть именно отправка,и начинает читать 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 лет назад.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!