За последние 24 часа нас посетили 17677 программистов и 1639 роботов. Сейчас ищут 2309 программистов ...

Проверка возможности взлома.

Тема в разделе "Прочие вопросы по PHP", создана пользователем banzaj, 20 май 2006.

  1. banzaj

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

    С нами с:
    20 май 2006
    Сообщения:
    3
    Симпатии:
    0
    Вобщем написал wap-сайт на php. Смысл в том, что скрипту передается имя директории и он отображает ее содержимое. Там могут быть вложенные директории или файлы, которые можно скачать. Все разрешенные файлы хранятся в одной директории - downloads. Задача - запретить просмотр директорий выше downloads. Для этого я проверяю параметр, кот. передается скрипту следующим образом:

    //если в начале переменной идет слово, отличное от downloads - запустить процедуру hack()
    if (!(strpos($dir,'downloads')===0))
    hack();

    //если в начале переменной идет downloads/.. - запустить процедуру hack()
    if (strpos($dir,'downloads/..')===0)
    hack();

    //если где-либо встречается последовательность ../ - запустить процедуру hack()
    if (strpos($dir,'../..')>-1)
    hack();

    Вобщем, я хотел бы узнать, можно ли обойти эти ограничения?

    З.Ы. общий вид запроса: index.php?dir=downloads/music
    В результате будет выведено на экран содержимое паки music
     
  2. wolandino

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

    С нами с:
    5 фев 2006
    Сообщения:
    193
    Симпатии:
    0
    Адрес:
    Россия, Астрахань
    banzaj

    а почему просто сервером не открыть только нужные файлы, заперерев остальные?
    передача пути в адресной строке - плохо))
     
  3. banzaj

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

    С нами с:
    20 май 2006
    Сообщения:
    3
    Симпатии:
    0
    2 wolandino,
    файлов много будет, и возможно будет добавлять новые неопытный человек. Так что этот вариант подходит плохо, хотя тож вариант. Всеж хотелось бы чтоб был скрипт безопастный.
     
  4. olo

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

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    тогда проверяй уж и такое: downloads/./../
    я бы собирал полный путь и смотрел его (realpath)
     
  5. banzaj

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

    С нами с:
    20 май 2006
    Сообщения:
    3
    Симпатии:
    0
    2olo
    Пасибо, попробую.