• Как сделать чтобы при наведении на ссылку с ховером border-top:4px solid white; не прыгала надпись?

    ksider
    @ksider
    Я сварщик не настоящий
    Элементу без ховера добавить
    a {border-top:4px solid transparent; }
    или цвет фона
    Ответ написан
    Комментировать
  • Так ли плохо решение проблемы "сделать калькулятор" через eval?

    Если в eval попадают данные только через фильтры, затем собираются через f""строку и только после соответствия всем условиям попадают в eval, разве это плохой подход и существуют ли в данном случае какие-либо уязвимости ?

    Ну если ты точно можешь гарантировать, какие данные в итоге попадут в eval, то в целом ничего плохого.
    Проблема только в том, что гарантировать ты этого не сможешь.

    Так что всё-таки лучше взять уже готовое решение этой проблемы:
    https://stackoverflow.com/questions/2371436/evalua...

    PS: код следует прикреплять в виде текста, а не картинки
    Ответ написан
    3 комментария
  • Что может случиться после перехода по вредоносной ссылке?

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

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

    Сайт может маскироваться под легитимный сайт. Он может это делать так, что визуально невозможно найти отличия. Проще научить людей не переходить по ссылкам чем отличать фишинг от не фишинга, надежно распознать фишинг в общем случае невозможно.
    Ответ написан
    Комментировать
  • Что может случиться после перехода по вредоносной ссылке?

    @rPman
    * деанонимизация, как минимум сайт узнает ваш ip адрес (а из него примерные географические координаты), очень часто об этом забывают пользователи telegram и других анонимных чатов
    * спам через уведомления, сайты запрашивают разрешение на прием уведомлений (иногда циклически, пока не нажмешь да) и через некоторое время у вас будут всплывающие окна с картинками (реклама)
    * атака уязвимых веб сервисов где вы авторизованы - click jacking (вслепую заставлять нажимать кнопки на авторизованном сайте, рисуя его со 100% прозрачностью в iframe, пододвигая под курсор пользователя), cross site scripting (выполнять действия на сайтах вызывая напрямую там запросы)
    * есть опасность доступа к буферу обмена, дело в том что по стандарту, браузер не имеет прямого доступа к буферу, пока пользователь не совершит действие на сайте (клик мышкой), заставить пользователя это сделать не сложно, а содержимое буфера будет у злонамеренного сайта, а что там у вас в буфере бывает - иногда очень интересно
    * фишинг - подсовывать визуальную копию других сервисов, требовать авторизацию и таким образом выуживать логин пароль
    * многие люди разрешают (поведение браузеров по умолчанию) автоматическую загрузку файлов в каталог загрузки, злонамеренный сайт может подсунуть туда легитимное приложение, зараженное трояном, в надежде что пользователь когда-нибудь запустит его, увидев в папке загрузки (там всегда бардак и никто не запоминает откуда что скачали), на самом деле это одно из самых опасных действий, так как переводит операции из браузерной песочницы в операционную систему, а там уязвимости опаснее
    ...
    Ответ написан
    1 комментарий
  • Почему в терминале не отмечается, что проект работает через виртуальное окружение?

    sswwssww
    @sswwssww
    Потому что PS F:\it\test> это PowerShell который по умолчанию не подхватывает виртуальное окружение после его активации, а сверху дефолтный CMD который это делает. В настройках Pycharm можно задать с какой оболочкой работать. И я уверен, что PowerShell можно соответствующим образом настроить чтобы он сам активировал виртуальное окружение.
    UPDATE:
    Здесь есть решение твоей проблемы.
    624ed37b94957418041921.png
    Ответ написан
    1 комментарий
  • Как правильно сформировать модель для статьи ( поста )?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Ну, как минимум FK к article у кода и фотографий - лишний.
    P.S. При загрузке файлов лучше генерить им рандомные имена
    import uuid
    import os
    
    def get_file_path(instance, filename):
        ext = filename.split('.')[-1]
        filename = f'{uuid.uuid4()}.{ext}'
        return os.path.join('folder_path', filename) # folder_path - нужная папка (article, по идее можно вытянуть из instance)
    ...
    ...upload_to=get_file_path
    Ответ написан
    Комментировать