За последние 24 часа нас посетили 18180 программистов и 1651 робот. Сейчас ищут 1614 программистов ...

как случайно не удалить записи из БД [алгоритмы]

Тема в разделе "Решения, алгоритмы", создана пользователем Koc, 16 июл 2008.

  1. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    это защита от перехода по ссылке. А вот дальше обычные кнопки с POST спасут мир.
     
  2. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    мне кажется, что мы уже рассмотрели возможность подделки пост-запроса. В этой же теме.
     
  3. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    кодируй
    например придумай уникальный ID для каждого юзера и требуй его передавать при запросе к скрипту удаления
     
  4. mantell

    mantell Активный пользователь

    С нами с:
    7 окт 2008
    Сообщения:
    125
    Симпатии:
    1
    Mr.M.I.T. я бы даже сказал, не для каждого юзера, а для каждого сеанса авторизации. Можно тупо id сессии передавать. Нету его или он неправильный - игнор запроса или вовсе логаут. Вроде вполне надёжно.
     
  5. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Концептуально проблема решается через обращение к скрипту на собственном сервере типа mydomain.ru/get?af65e, который будет искать в базе идентификатор и соответствующий ему адрес, брать файл и отдавать пользователю.
     
  6. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Mr.M.I.T.
    mantell
    товарищи, прежде чем писать, будьте любезны, пробегитесь глазками по теме.

    спасибо, это совет года. Представь картину: пользователь оставляет коммент
    Код (Text):
    1. [img="admin.php?do=delete&id=10"]
    . Ессно тут никакого хеша, а значит будет логаут при обращении. Одмин идет на страницу комментариев, что бы удалить злополучный коммент и получает... правильно, логаут.


    AlexGousev
    да, нормальное такое решение. К сожалению нет времени сейчас делать так, поэтому просто буду прибавлять хеш на основе секретной строки и сравнивать его. Строку ессно можно будет менять в конфиге.
     
  7. mantell

    mantell Активный пользователь

    С нами с:
    7 окт 2008
    Сообщения:
    125
    Симпатии:
    1
    Koc, я бы советовал тебе самому внимательнее тему прочитать и найти разницу между тем, чтобы было предложено и моим предложением.
     
  8. mantell

    mantell Активный пользователь

    С нами с:
    7 окт 2008
    Сообщения:
    125
    Симпатии:
    1
    О, кстати, с логаутом да, портак.
     
  9. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Koc
    так ты требуй передовать нужный код, т.е. типа admin.php?do=del&id=10&code=SID например
    хацкер не сможет подставить твой SID в ссылку он его не знает
     
  10. mantell

    mantell Активный пользователь

    С нами с:
    7 окт 2008
    Сообщения:
    125
    Симпатии:
    1
    Даже более того, если при авторизации используются именно сессии, такое решение выглядит наиболее правильным с точки зрения принципа их работы.
     
  11. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    я подрос и понял, что такая уязвимость называется СSRF. Вообще прикольно почитывать свои старые темы
     
  12. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    и её тут уже решили
     
  13. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Есть один простой способ, как не дать вставив линк в img скажем сделать какое-то действие: всегда делайте подтверждение действия через POST запрос. Т.е. пока у вас GET - ничего не должно происходить, только спрашивать - удалить? Да/Нет.
     
  14. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Psih
    чё один то?
     
  15. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Mr.M.I.T.
    SID стырить можно, он же в куках хранится как ID сессии. Если не обрабатываются нормально линки, то через document.cookie можно всё вытащить всёравно. Так что POST это единственная и безпардонная защита, которая 100% защищает от такого рода атак.
     
  16. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    Psih
    httpOnly

    а пост как раз подделать можно (и в этой теме мы уже обсуждали это, раза 2)
     
  17. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Читать научись.

    Для подтверждающего запроса ничерта подделать нельзя.
     
  18. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Psih
    ну эм, я как бы исхожу из того что XSS нет. а если SID стырит, то нах тогда ещё IMG какие-то
     
  19. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    честно говоря я вообще проблем не вижу никаких... тупо не могу понять