if ( какая либо проверка безопасности пройдена ) { Показать страницу }Илиif ( какая либо проверка безопасности не пройдена ) { остановить выполнение кода }Показать страницуКак правильно? Или всё равно? Кто как делает?
Пусть это будет кодерских дилемм треад.
>>156438418 (OP)goto ебашь
>>156438458Это вопрос про php. Не уверен, что там такое есть.
>>156438466А чё там в пхп ваще? Стринги или вары?
Как правильно проверять длину строки, например пароля или ника - по количеству символов, или по количеству байт?
>>156438499Прошу тебя, не ставь ограничение на длину пароля. Оставь стандартный стринг и проверяй по его весу.
>>156438418 (OP)Как-то гавнокидил лесенку на плюсах. Охуел что if и else различаются в циклах шо пиздец.
>>156438492Да не важно. Это вопрос скорее про логику написания кода. Про логику условий и действий, даже не важно, какой язык.Вот ты бы как сделол - показывать, если прошёл проверку, или перед показыванием добавить проверку с выкидышем, если она не пройдена, но она не будет логически связана с показыванием. Блин, сложно я описалА если честно, я даже не очень понял твой вопрос. Тип строка там есть, вроде.
>>156438418 (OP)Зачем останавливать код если можно даже не начинать в случае провала проверки?
>>156438540Шо? А чем плохи ограничения? один хуй, ограничивать надо как то, а то гигабайт будут в переменную лить. Нельзя допустить, чтобы сервер даже принимался ха обработку такой большой переменной.И да, я ничего сейчас не пишу, просто интересно порассуждать на эту тему
>>156438615Ну когда проверка идет, код уже начался же
>>156438571Правильно тело условия выносить в отдельную функцию (методы\етк), а в самом условии только дергать ее, так чтобы ветвления из твоих ифов были как можно короче.
Господа! Как вы считаете, какой максимальной длины можно разрешить на сайте иметь ник и пароль, например?
>>156438679256 символов, очевидно же.
>>1564386793 символа
>>156438670Да, такое тоже есть. Кстати, когда кода много, такой подход наверно самый правильный, чтобы 100500 раз один и тот же код не писать. Хотя он может быть немного разным.Спасибо за твоё предложение!
if(auth) { access.granted()} else { access.denied()}acces[is_auth ? 'granted' : 'denied']()
>>156438697Почему очевидно? Я просто с деревни на самом деле нет
>>156438638Оу, я думал что может в случае как если while (условие) {сделать что-то} и do {сделать что-то} while (условие)разница будет.
>>156438499> по количеству символов, или по количеству байтзависит от разрешенной кодировки же.utf(x) занимает больше одного байта на символ.
if ( условие ) { действие }илиif ( условие ) { действие }
>>156438418 (OP)Зависит от остального кода. Пихай в if бОльшее кол-во действий, то есть:if (condition) { action1(); action2(); action3(); action4();} else { action5();}
Как же моего внутреннего перфекциониста косоёбит, когда приходится вот так вот переносить тело действия, отделяя его от скобки. Как тут в 1 варианте >>156438806 никрасива!!!
>>156438754Потому что у кодеров окр и они не могут без степеней двоек.
>>156438862А ты пиши так: if (условие) { действие }K&R FTW BITCH!
У меня тоже окр, лёль
>>156438418 (OP)Поясняю тебе за щеку:if ( какая либо проверка безопасности пройдена ) {Показать страницу }
>>156438905Спасеба тебе за щеку
>>156438418 (OP)c==3 или 8==D ?
>>156438932с==8
>>156438418 (OP) 8=======3 >>156438932
>>156438932:o c==3:o c==3:==3:=3:3
>>156438892Теперь шледующий вопрос: стоит ли отделять условие от действия пропуском строки?if (условие) {действие }VSif (условие) {действие }
>>156438870Да, но не слишком ли многовато 256 для пароля? 32 не хватит?
>>156439019Нет.
>>156439019Не стоит. Но в целом пропускать строки иногда стоит (там, где есть логическое разделение). Чрезмерно плотный код читать не возможно.
>>156438418 (OP)Можна в жопе анальный секс?;)+0!
>>156438418 (OP)Я думаю по ситуации.Если проверка строгая, т. е. без ее соблюдения точно нельзя пускать дальше, то вариант 1.Если же ты проверчешь пару кейсов в соучае которых что-то не будет отображаться, то вариант 2
>>156439082Смотрел недавно код Dashchan, так этот ебанутый вообще без отступов хуячит
Отступать пробелами или табом? И почему. Я табами, потому что таб изначально для этого и был придумон.
>>156438679На сайтах обычно вижу от 8 до 16
>>156439152Пробелы использует только быдло, которое не знает о существовании табов, либо говорят, что так удобней (нихуя не так)
>>156438418 (OP)Мне не нравится ты что ав тут говорите тотчто я не понмсвю
>>156439152Табами разумеется.Все современные средства разработки умеют заменять табы на пробелы, чтобы код не ехал на других машинах, в случае чего. Ровно так же можно и пробелы перегонять в табы.Или ты считаешь, что все пробелофилы действительно ебашат по 4-8-16 пробелов руками?
>>156439237>>156439177Двачую. Табы и только табы
>>156438418 (OP)Первый вариант обычно самый простой и очевидный, но периодически это превращается в портянку вроде:if(first){foo();if(second){bar();if(third){baz();}}}И вместе с уровнями вложенности растёт и раздражение от такой хуйни, пока код уплывает за правую границу монитора.Если контекст позволяет ограничится чем-то вроде if(fail) break\return; без ввода новых сущностей - то предпочитаю его.
/
Внимание, вопрос тысячелетия: комментировать ли код?
>>156439082спасибо за совет
>>156439237>Табами разумеется>>156439177>Пробелы использует только быдлоБратюни. На самом деле, я не понимаю, зачем нужны пробелы. Я вроде как-то давно слышал, что зачем-то таки иногда нужны пробелы, но на этом всё.А табы всегда идеальны - они одинаковой длины, а пробелы - вдруг больше или меньше поставишь, возиться с ними - гемор. Таб - это средство, пробелы - это костыль.
>>156439237>Все современные средства разработки умеют заменять табы на пробелыКстати, а нахуя, лол?
>>156439755Как написал один умный анон (или не анон) - исходя из программного кода должно быть понятно, что происходит; комментарии же нужны для объяснения, почему оно сделано так, а не иначе.
>>156439827я вот комментил иногда свой код, чтобы знать, что в данный момент происходит, лол. То есть из самого кода было не понятно.
>>156438418 (OP)Лучше первое, чтобы потом скобки не считать.
>>156439847>То есть из самого кода было не понятно.Значит твой код - говно, переписывай. Разбивай на методы, каждый из которых выполняет свою простую задачу, меняй имена переменных, оптимизируй. Красивый код должен быть читаемым, как книга.
>>156439872>Значит твой код - говно, переписывайТам дело было не столько в коде, сколько в именах переменных, и в том, что в них конкретно хранится.
>>156439814>Братюни. На самом деле, я не понимаю, зачем нужны пробелы. Я вроде как-то давно слышал, что зачем-то таки иногда нужны пробелы, но на этом всё.Для перфекционистов. С табами не всегда красиво сделать можно.
>>156439880>сколько в именах переменных, и в том, что в них конкретно хранитсяЭто то, что я ненавижу, когда с этим сталкиваюсь - либо когда код очень старый, либо когда его пишут долбоебы и не дают переменным нормальные имена. Совсем в крайности вдаваться, конечно, не стоит, но имя переменной из 2-3 слов - это вполне нормально. Если видишь сложный код - его всегда можно разбить на более простой так, что даже не-программисту будет отчасти понятно, что он делает.>>156439889>Для перфекционистов. С табами не всегда красиво сделать можноБывает такое
Вопрос десятилетия: В каком виде хранить в базе данных пароль пользователя?Понятно, что не с голой жеппой. Соль добавлять? Сколько раз хэшировать? Стоит ли сильно изъёбываться? Что использовать в качестве соли?Вот так достаточно: md5(пароль + соль)Или надо так - md5( первая половина символов от(md5(пароль)) + соль + md5(фаза луны + цвет кроссовок медведева) + температура воздуха в Рейкьявике)?
>>156439943ну а как называть переменные? Можно и на эту тему подискутировать. Например, как развать переменную, в которой будет храниться... да хоть ник пользователя? $usernickname?
>>156439968Похуй. Если у тебя утечет соль - то вместе с ней утечет и функция высчитывающая фазу луны.В этом есть смысл только если намеренно делать её тяжелой, для замедления перебора.
>>156439889>пикА, понятно. Ну, такие конструкции не всегда устойчивы, в плане что если где-то сменится количество символов - всё может поплыть.
>>156440012(Ну и, разумеется, тяжелой она должна быть с алгоритмической точки зрения, а не от твоего быдлокода.)
>>156440042а вот это очень ценное и верное замечание.
>>156440000>ну а как называть переменные?Чтобы было понятно, что это такое. Например:Имя юзера: usernameПароль: userPasswordНик: userNicknameДР: userDataOfBirth
>>156440012кстать, как думоешь, если пилить какой-нибудь сайтик, если на нём рега будет сначала закрытой или по инвайтам - это сделает его более илитарным в глазах тп и тх?
>>156438418 (OP)Первый вариант, множественные точки выхода это не совсем эстетично.
>>156440054я правильно понимаю, что второе слово с большой буквы - для удобства отделения его зрительно от первого?Просто я ебанутый, и люблю докапываться до сути вещей.
>>156440087Погугли стили - много чего узнаешь. Вот основные:Camel case: userPasswordPascal case: UserPasswordUnderscore: user_password
>>156440115а ты сайтики писал?
>>156440124Нет - не люблю фронт-энд
>>156440149как ты думаешь, если пилить сайтик, стоит ли в начале размещать его на простом хостинге "с голой задницей", то есть без nginx и iptables, без всего, голый апач, или сразу ВПС запилить?
>>156440172На чем делать и размещать - это вопрос неоднозначный. Тут ничего не скажу, поскольку этим не занимался (то есть просто запилить сайт могу, а вот сделать его защищенным - вряд ли).
>>156440115Погуглил. А ты какой кейс предпочитаешь, кемэл?
>>156440253>Погуглил. А ты какой кейс предпочитаешь, кемэл?Да, для всех языков, кроме VB - кемэл. Для VB - паскал. Хотя на люди С++ больше жалуют underscore, но мне пофиг. Если ты начинаешь проект сам, то выбирай свой любимый стиль и заставляй всех его придерживаться. Если нет, то сам придерживайся текущего стиля
>>156440250Так уж сложилось, что одно время я ради забавы держал один сайтик, и один человек его дудосил, причём достаточно серьёзно. И это вынудило меня начать разбираться в том, как от этого можно защититься. Тогда я и научился немного этому. Так что наверно спасибо тому парню.Это я к чему, я на начальном уровне умею защищать, и когда-то это всё равно придётся делать. Я просто думаю, сильно ли опасно без защиты первое время быть, вот чё
>>156440318Ну, если твой сайт - простая поделка, то не все равно ли? А если ты на нем зарабатываешь крупные деньги, то да, лучше озаботиться защитой.
>>156440316Спасибо за инфу
>>156440316Стандартные библиотеки на плюсах используют underscore как и на питоне поэтому разумно в этих языках использовать его
>>156440363А ещё круче пойти против системы, и использовать то, что самому нравится. Да и не всё ли равно, что нравится создателям библиотек
>>156439968Лучше не использовать MD5 для таких целей. Он даже брутфорсом, безо всяких таблиц, ломается на 8 символов за несколько минут на современной видеокарте. Даже с солью он недостаточно безопасный в 2к17. (https://www.youtube.com/watch?v=7U-RbOKanYs)
>>156440363Если ты про функции, то они там вообще без стиля - все имена дико сокращены и записаны только lower кейсом. А на имплементацию пофиг, так что можно юзать любой стиль.
>>156440426Бля, спасибо. А чё использовать та?Прр пр пр подождиБрутфорс требует множества попыток входа, ну, когда перебираешь, а если ограничить количество попыток входа за единицу времени, например 10 в минуту - тогда уже не получится брутить, не так ли?
>>156440474Пароли не хранят в чистом виде как раз для того, чтобы при возможной утечке твоей БАЗЫ ДАННЫХ, их нельзя было раскрыть (и взомать все аккаунты Васи Ерохина, у которого одно мыло&пароль на все сервисы). Так что подразумевается, что хэш и соль у взломщика уже будут в чистом виде.
>>156440474А чем тебе хеш(любой) брутфорсить сайт поможет?Это на случай если ты проебешь базу паролей, а дальше её брутить будут на своей машине, без каких либо ограничений.
>>156440553>А чем тебе хеш(любой) брутфорсить сайт поможет?не понял тебя
>>156440553Брутить на своей машине? Это вообще возможно меньше чем за вечность?
а что, если соль не хранить в базе? А она будет задаваться исходным кодом сайта
>>156440612Речь идет о хешировании пароля. Как ты собираешься брутить сайт(через страничку логина, к которой можно прикрутить ограничение попыток), если узнаешь хеш? Вне зависимости от используемой функции, соли, и вообще чего угодно.
>>156440426--В 2к17 ДА-->>>156440667
>>156440683>Как ты собираешься брутить сайт(через страничку логина, к которой можно прикрутить ограничение попыток), если узнаешь хеш?Я не собираюсь брутить, я спрашивал, разве получится ли брутить через сайт, если поставить ограничение на страничку логина?>Как ты собираешься брутить сайт ..., если узнаешь хеш?не знаю
>>156440680Просто смещаешь проблему из одного места в другое. Точно так же могут угнать и твой код.То что ты пытаешься делать, называется "security through obscurity". И это не очень эффективно.
>>156440689А разница? 2к17 или 1к99 - компы особо мощнее не стали. Ну на несколько порядков - да, но брутить все равно проблематично. Я как-то забыл пароль к своему zip архиву и пытался сломать брутфорсом - и нифига не вышло.
>>156440680А её и не хранят.Если утекла база + соль(код), то в жопе. Если просто база - то это уже не так страшно. В этом же весь смысл.И, соответственно, в случае проёба всего сайта - становится не важно насколько хитрожопое у тебя хешироване, у атакующего будут все сорцы с твоими функциями высчитывающими фазу луны.
>>156440733А что эффективно?
>>156440745По моему там сначала вообще речь про брутфорс паролей на сайтах была, он от производительности твоего компа вообще не зависит
>>156440733Да, пожалуй, ты прав. Ведь если угонят код, им станет известно о том, как создавалась соль.
>>156440745Ну, смотри пример из этого поста:>>156440426MD5 можно брутить на современных видеокартах на коллизии. ОЧЕНЬ БЫСТРО БРУТИТЬ.Так что разница в несколько порядков ОЧЕНЬ РЕШАЕТ для некоторых алгоритмов. Особенно криптографически менее стойких, чем было изначально заявленно.
>>156440730>Я не собираюсь брутить, я спрашивал, разве получится ли брутить через сайт, если поставить ограничение на страничку логина?Просто ты пытаешься решить не ту проблему, о которой идет речь.В случае если тебя будут брутить не имея на руках твоей базы, а хешируют как раз на этот случай, то поможет, да. Но если всерьёз рассчитывать на то, что базу у тебя никогда не уведут, то можно и вовсе без солей и хешей обойтись - хуячить пароли открытым текстом. Не надо так делать.
>>156440747Да, понял тебя. А что правильнее делать тогда?
>>156440797Брутфорс паролей на сайтах можно предотвратить на раз-два. 3 неправильные попытки - и блокировка на 10 минут>>156440832Посмотрю, интересное видео
>>156440861Тогда можно лишить юзера возможности авторизации
>>156440851А какую проблему надо решить и как её решить?
>>156440856bcrypt
>>156440895Раньше в вк, если обновить страницу больше одного раза в секунду, но выскакивала страница с просьбой охладить трахание, и сайт блокировался для тебя на какое то небольшое время
>>156440905>какую>>156440539>как>>156440944
>>156440961То* выскакивалаФикс
>>156440747>>156440856>Если утекла база + соль(код), то в жопе.Не в полной жопе, если искользовать НОРМАЛЬНЫЙ, СТОЙКИЙ ХЭШ АЛГОРИТМ.В этом и вся суть криптографически стойкого хэша. Что его невозможно (непрактично) будет превратить обратно в пароль. ДАЖЕ ЕСЛИ УТЕКЛА БАЗА ДАННЫХ, И ПАРОЛИ БРУТИТ ФЕРМА МАЙНЕРОВ.
Мамкины быдлокодеры, помогите с низкоуровневым хуком мыши. Нужно стирать флаг LLMHF_INJECTED если он обнаружен. Пишу на ahk.
>>156440977Главное, чтобы факт слива базы был известен. Тогда хотя бы на своем сайте пользователям можно будет поменять пароли или еще что-то. Правда вот если они эти же данные использовали на других сайтах, то это уже не спасти. Хотя, людей предупредить можно, чтоб сами сменил , лол.
>>156441039При нормальном хэше с солью, поиск коллизий будет длится тысячи лет. Так что пароли будут в безопасности ДАЖЕ В СЛУЧАЕ УТЕЧКИ.
Статейку нашёл https://habrahabr.ru/post/139974/ прочитал
>>156441004Насколько мне известно, хуй ты его сотрешь, если просто внедряешь данные из процесса. Надо закапываться глубже и косить под фильтрующий драйвер, так что на уровне скриптов это не прокатит.
>>156438418 (OP)Я шарпоблядь, не знаю чего у тебя за язык. Юзаю второй вариант.Когда условий на проверку много, то в 1 варианте будет много вложенных условий - нафига миллиард лишних фигурных скобок плодить. Во 2 варианте просто return после проваленной проверки.
>>156438418 (OP)Хуй бы я пользовался сайтом, который останавливает выполнение кода. Ясен хуй, что если проверка не пройдена, нужно отправить на авторизацию
>>156441779Это только для простоты примера. Понятное дело, что рвать выполнение кода с пустой страницей пользователю никто не будет.
>>156438418 (OP)Кстати, вот тут во втором ответе неплохой пример. https://softwareengineering.stackexchange.com/questions/18454/should-i-return-from-a-function-early-or-use-an-if-statementТак что я голосую ЗА ВТОРОЙ ВАРИАНТ
>>156438418 (OP)Кто как хочет тот так и дрочит. Делай как самому удобнее, если нет вышестоящего долбоеба который свято уверен в правильности именно его подхода.
>>156441894Да, действительно.
Единственное что - есть неприятный страх того, что если условия случайным образом проскочат, то страница покажется. А когда всё в скобочках - то типа уж точно не покажется.
бамп
ба амп
>>156438905>>156438418 (OP)Пиздец макаки совсем себя прогерамми считать стали
ОП что бы не загромождать код, у тебя должен быть просто переменная флаг.И ты в ифах ей изменяешь значение в случае если что то пошло не так.А перед отображением страницы просто чекаешь ее значение.например:t=0if OS != "windows" then t=1if data==0 then t=2а дальше просто:if t==0 then showpage()
>>156438975Проорал. А я думал как появился смаил ":3".
>>156447930Интересный подход. Только не лучше ли как только условие не выполнено, сразу тормозить коней? Типа дальше уже нет смысла проверять