Задать вопрос
  • Как лучше провести валидацию силы пароля?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Это спорный вопрос. Имеет смысл проверять по таблице самых популярных паролей (серверная валидация) и отказывать, если пароль оттуда.
    Ни в коем случае не проверяйте сложность пароля фактом наличия в нём символов из определённых групп. Нужно просто считать энтропию пароля в битах и задать пороговую допустимую энтропию.
    К примеру, если у пользоватля длинный пароль из 30 символов, ему совершенно необязательно добавлять символы разного регистра, цифры и всякие запятые, они практически не повлияют на сложность, зато могут повлиять на способность пользователя как следует запомнить свой пароль (где там какая цифра, куда дефис и где именно скобки...)

    Итак,
    1. накладывать оганичения нужно только на энтропию пароля, остальное пойдёт только во вред.
    2. ограничения должны нести рекомендаельный характер, имеет смысл сделать два порога энтропии. Совсем слабые пароли не допускать, средние допускать с предупреждением. Пусть пользователь осознаёт сложность пароля и сам соотносит ее с рисками злонамеренного подбора. Порог энтропии можно проверять на клиенте, базу популярных паролей придётся чекать на сервере.
    3. как следует солите пароли и не храните их в открытом ввиде. Это правило следовало бы вынести на первое место, но это не рейтинг мер, а просто важные замечания. Соль для каждого пароля можно хранить рядом с хешем пароля через разделитель, рядом же можно указать и название алгоритма хеширования.
    4. сложность пароля - не панацея. Нужно делать эффективную систему распознавания попыток подбора пароля. Если сильно ограничить скорость подбора пароля то пароль можно делать простым. Пример тому - пинкоды на вашей банковской карте. У вас всего три попытки неправильного ввода на сутки, ошибочные попытки на следующий день вовсе окирпичат вашу карточку. Не бывает простых решений. Нужно понимать также, что пароли могут брутфорситься не с целью подбора, а с целью блокирования входа законного владельца аккаунта.
    5. Не забывайте про двухфакторную авторизацию. Это важно.
    6. Обновляйте сессию пользователя при штатной работе в аккаунте. Не вынуждайте каждый раз вводить пароль по несольку раз на день. Этим, к примеру, постоянно грешит алиэкспресс. Но у них многое ерез задницу.
    7. Не делайте нестандартных форм авторизации, важно, чтобы ваша форма нормально работала с основными стандартными менеджерами паролей. Если пользователь пользуется менеджерами паролей, то это его осознанный выбор, он может быть вполне обоснован. Это гораздо лучше, чем пароль на стикере, прилепленый к монитору.
    8. Если делаете API, не требуйте использования в нём паролей. Сделайте нормальный менеджмент ключей, не заставляйте светить пользовательские пароли в открытом виде в скриптах и исходниках. Не все, пока еще, грамотно работают с секретами.
    Ответ написан
    1 комментарий
  • Ошибка python SyntaxError: invalid syntax как решить?

    @Hanneman
    Это потому что в вашей системе по умолчанию установлен Python 2.7.
    Вы-то поставили третью версию, но вторую он не заменяет (вы даже не указали, как скрипт запускаете) - вот потому второму Python не нравится print(), потому что во второй print это оператор, а в третьем оператор print был заменён функцией print().

    Python2:
    print "Дважды два: ", 2*2
    Python3
    print("Дважды два: ", 2*2)
    Ответ написан
    2 комментария
  • Как мне поставить django на хост(деплой?) heroku?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Что мне сделать, что бы исправить эту ошибку?

    Перестать доверять видео-урокам и начать читать документацию.
    Ответ написан
    Комментировать
  • Почему парсер выдает ошибку?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    Зачем стрелять себе в ногу, если они все отзывы отдают json'ном? Вот простой код:
    import requests
    import json
    
    import requests
    headers = {
        'content-type': 'application/json',
    }
    
    data = '''{"filter":{"rated":"Any",
    					"orderBy":"WithRates",
    					"tag":"",
    					"reviewObjectId":276,
    					"reviewObjectType":"banks",
    					"page":"1",
    					"pageSize":20,
    					"locationRoute":"",
    					"regionId":"",
    					"logoTypeUrl":"banks"
    					}}'''
    
    response = requests.post('https://www.sravni.ru/provider/reviews/list',data=data,headers=headers)
    
    reviews = json.loads(response.text)
    
    total = reviews['total']
    
    print(f'Всего отзывов: {total}')
    
    for review in reviews['items']:
    	title = review['title']
    	text = review['text']
    	print(f'{title} - {text}')

    Так как всего отзывов 8718, а на каждой странице по 20 отзывов - получаем 436 страниц. Меняем параметр page в запросе от 1 до 436 и получаем все отзывы в удобном виде.
    Структура json:
    5f9da3b368e7d183722613.png
    Ответ написан
    Комментировать
  • Как открыть файл txt для редактирования одной конкретной строки, при этом все остальные остануться неизменны?

    adugin
    @adugin Куратор тега Python
    В списке lines модифицируйте нужную строку lines[i] и сохраните lines обратно в файл. Для сохранения файл нужно будет открыть в режиме записи. Вообще, конечно, для таких задач лучше использобвать БД. Посмотрите в сторону работы хотя бы с SQLite3, там всё просто.
    Ответ написан
    4 комментария
  • Как придумать название игровой компании и саму же игру для начала?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    Придумай, что мешает-то? Бухни винища, курни травки - авось в расширенном состоянии сознания посетит Шиза... :)
    Ответ написан
    Комментировать
  • Как правильно выполнить команду одной строкой с несколькими аргументами, где один из них список?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    юзай xargs
    echo -n /etc/AlterPro/apps_{sys,map,ctrl,port}.conf | xargs -d" " -n1 -I NAME appman -f NAME standby unregister --sys-id 3
    Ответ написан
    1 комментарий
  • Как запретить ввод пробелов, скобок и тире в поле?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    https://regex101.com/r/nV9ZLS/1
    ^[^\s()-]*$
    Первая "крышка" означает, что это начало строки. Последний "доллар" означает конец строки.
    Между ними любое (0 или более символов) из множества, описанного в квадратны скобках.
    В квадратных скобках крышка означает, что множество инвертировано. То есть допускаются любые символы, кроме перечисленных.
    То есть, данное множество представляет собой НЕ: пробел, скобки и минус, но любые другие символы.
    Ответ написан
    1 комментарий
  • ДДос атака на nginx пакетами 1 байт?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    500 строк в секунду - это не мощно и, вероятно, даже не DDoS. Если адрес один, то просто закройте ему доступ брандмауэром, а если адреса разные, то настройте лимит запросов в Nginx.

    nginx.conf
    http {
        ...
        limit_req_zone $binary_remote_addr zone=reqlimit:10m rate=30r/s;
        ...
    }

    some_site.conf
    server {
        ...
        location / {
            ...
            limit_req zone=reqlimit burst=10 nodelay;
        }
    }

    После этого запросы с одного ip-адреса начиная с 31-го в секунду будут отбрасываться.

    Как вишенку на торт, можно добавить ещё фильтр для fail2ban:

    nginx-req-limit.conf
    [Definition]
    
    failregex = limiting requests, excess: .* by zone .*, client: <HOST>
    ignoreregex =

    и правило в jail.local
    [nginx-req-limit]
    enabled = true
    port = http,https
    filter = nginx-req-limit
    logpath = /var/www/*/*/logs/error.log # Здесь укажите свой путь к логам виртуального хоста
    findtime = 600
    maxretry = 10
    bantime = 7200

    После этого адреса DoS'еров будут автоматически блокироваться брандмауэром на два часа. Что разгрузит Nginx от обработки паразитного трафика.
    Ответ написан
    11 комментариев
  • Что нужно, чтобы стать junior-разработчиком или компании взяли на работу в качестве стажёра?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Но каких-либо понятий о них у меня нет, а также пособия по ним не могу найти.

    С таким подходом схватку за рабочее место можете считать проигранной тем соискателям, которые могут нагуглить материал за 5 минут.

    https://www.ozon.ru/context/detail/id/144895863/
    https://www.ozon.ru/context/detail/id/24939188/
    https://www.ozon.ru/context/detail/id/146287471/
    https://www.ozon.ru/context/detail/id/140939231/
    Ответ написан
    Комментировать
  • Как выучить Kotlin?

    zagayevskiy
    @zagayevskiy Куратор тега Kotlin
    Android developer at Yandex
    В смысле нигде нет материалов?
    Доки
    Коаны
    Но если джава тебе слишком сложно, то лучше бросай ты это дело. Котлин так-то не проще, тк концепций в нём больше.
    Ответ написан
    7 комментариев
  • Как выучить Kotlin?

    mmmaaak
    @mmmaaak
    Также как и любой другой ЯП, документация, книги, курсы, статьи и практика
    Ответ написан
    7 комментариев
  • Как преобразовать переменную из файла в число?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    что-то типа:
    float(adtemp.read().replace(',', '.'))
    должно помочь
    Ответ написан
    1 комментарий
  • Где найти видео с новшествами программирования?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Смотреть нужно документацию по вашему ЯП, и по используемых библиотеках. Там всегда самая актуальная информация. Если и есть продвинутые видео, то они, как правило, отстают на несколько лет.
    Ответ написан
    Комментировать
  • Где найти видео с новшествами программирования?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    программированию с низким уровнем качества, для новичков или с устаревшей информацией

    Вы не задумывались почему? Основной поток программистов - макаки, новички, и на них делается основной упор.

    Все кто более смышленный, гуглят, ищут сами.Это как правило акцентированные статьи на английском, пробелемы\задачи на работе и тому подобное.

    Никто не будет вам делать подарок, и скидывать сервис где собраны все гайдлайны от А до Я.

    Иначе зачем вы нужны обществу как программист, если ваш навык поиска информации равен продавшице Тамаре из магазина.

    Выход: Выбрать язык + описать задачу\проблему + выборка по году выдачи гугла + добавить ключевые слова = ваше решение задачи.
    Ответ написан
    Комментировать
  • После hard reset тормозит Honor 9 lite, как исправить?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Как можно исправить проблему? в эксплуатации 1 месяц, гарантии нет (т.к с Китая).

    Прошивка global или china?
    Если china - то у них в стоке было вшито очень много софта, который активно юзал gps, телеметрию, и постоянно запускал что нибудь в памяти.

    Можте быть поможет перерошивка или даунгрейд.
    Ответ написан
    3 комментария
  • Как не кипятится из-за полных идиотов и как с ними общаться?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    В общем, внутри всё буквально кипит и после каждого такого "разговора" нужно пол часа перекурить / сходить в спортзал / пробежаться и т.д.

    Всегда удивляло, как у людей подгорает от общения(особенно дистанционного) с неадекватами, которые тебе никто в принципе. Учитесь дисциплине, расслабляться. Это ваш хлеб, если вы будете общаться только с приятными и добрыми одуванами, вы тупо ничего не заработаете.

    В 80% любой крупный клиент(по моему опыту) у№бок, и вы с этим ничего не поделаете, нужно выдохнуть, и снять с него сливки в худшем случае, в лучшем - сделать работу идеально, без ругани, и получить его на постоянку.

    PS: у нас штат 120 человек в компании, один отдел работает на аутсорсе - итого, самый крупный клиент, который работает с нами уже 8 лет, самый жлобский и отвратный, и никто с ним не ужился, кроме этого отдела с железными ребятами. В итоге очень крупые деньги идут в нашу кассу.
    Ответ написан
    2 комментария
  • Для чего предприятия создают локальные сети, если существует интернет и там можно все хранить и передавать?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Основная причина: неконтролируемый доступ к размещённым/передаваемым бизнес-данным предприятия в сети Интернет.
    Далее, ещё ряд:
    2. Стабильность работы бизнеса, независящего от интернет-подключения.
    3. Узкий канал подключения к сети Интерент при большом количестве сотрудников в одном офисе/здании (bottleneck) и, как следствие, огромная потеря в скорости обмена данными как между сотрудниками, так и с внешними ресурсами.
    4. Возможность полной потери информации в любой момент времени и без шанса восстановления по независящим от бизнеса причинам.
    Ответ написан
    Комментировать
  • Как управлять с помощью telebot своим аккаунтом?

    SoreMix
    @SoreMix
    yellow
    Нет, pyTelegramBotAPI только для ботов

    Для клиента есть хороший pyrogram
    Ответ написан
    1 комментарий
  • Как закрыть доступ к серверу по ай пи и разрешить по домену?

    @Karpion
    Я не понял, как это помешает создавать зеркало.

    А так - вариантов много. Например, можно сделать вирт.сайты - так, что на доменное имя будет один сайт (если имён несколько - то на каждое можно вешать отдельный сайт), а на IP-адрес - другой сайт.
    Ответ написан
    Комментировать