Безопасность ПХП скриптоганов.

Тема в разделе "WASM.HEAP", создана пользователем UbIvItS, 8 май 2008.

  1. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    Посоветуйте, пожалуйста, наиболее надёжную модель получения скриптом вариков, дабы снизить вероятность слома засчёт переполнения.
    ---------------------------------------------------------------------------------------------
    Заранее благодарен.
     
  2. Voodoo

    Voodoo New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2003
    Сообщения:
    297
    Адрес:
    Новосибирск
    "Засчет переполнения" - это в смысле buffer overflow? AFAIK, его в собственно ПХП вообще не существует как вида.
     
  3. isaak

    isaak New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    12
    Debug: InternalError in vp_parser.main() details=maximum recursion depth exceeded in cmp
    Traceback (most recent call last):
    File "/var/web/cgi-bin/rpx-dev/vp_parser.py", line 286, in do
    data=main(st)
    File "/var/web/cgi-bin/rpx-dev/vp_parser.py", line 580, in main
    result+=main(nabor,cur_obj,pos)
    File "/var/web/cgi-bin/rpx-dev/vp_parser.py", line 708, in main
    data=vph.db.sql(sql_code,"both")
    File "vp_db.py", line 50, in sql
    err('Error DB=['+str(self.database)+']\n'+str(detail)+'

    Немного не в тему, но это сегодня у меня в питоне было.
     
  4. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    а что такое варики и что преполняется
     
  5. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Novi4ek
    имеется ввиду получение переданных в запросе скрипту переменных методом POST или GET.
     
  6. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    Мм. что переполняется тогда неясно. была когда-то древнющая бага в апаче (а не в пхп) когда он не умел работать с длинными толи гет толи пост (толи еще какими-то) запросами и получалось на самом деле переполнение буфера, но это не в тему.
     
  7. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    ок, вопрос можно поставить шире наиболее уязвимые моменты при передаче данных скрипту, хотя вопрос может быть несколько глуповат - как говориться, ман нам в помощь:)))
     
  8. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    Действительно странный вопрос! Самые общие рекомендации:
    1. Не использовать magic_quotes_gpc. Авторы этой функции посчитали php-программистов круглыми идиотами, решив избавить их скрипты от некоторых уязвимостей за счет лишения их адекватной работоспособности.
    2. Не использовать переменные одноименные передаваемым в скрипт параметрам (отключать такую возможность FALSEфикацией register_globals или специальной процедурой в начале каждого пхпшного модуля, которая unsetит все эти переменные) и пользоваться массивами $_GET, $_POST, $_REQUEST и т. д. (и их синонимами)
    3. Не использовать необъявленые переменные. Например все массивы следует сначала объявить хотя бы как $mass = array() а потом уже заполнять.
    4. Ну и конечно понимать хорошенько что ты делашь когда используешь переданные параметры при работе с базой данных, такими функциями как include, eval, preg_replace и т.д.
     
  9. IceFire

    IceFire New Member

    Публикаций:
    0
    Регистрация:
    30 окт 2006
    Сообщения:
    244
    Когда я делаю форму, данные из которой передаются скрипту, я обычно реализую следующее:

    1. Контроль данных на стороне клиента (JS)
    2. Контроль НАЛИЧИЯ ВСЕХ необходимых данных на стороне сервера (в противном случае скрипт завершает работу).
    3. Проверка переданных переменных (длина и структура)
    4. Представление всех необходимых параметров в строковом виде, работа с ними как со строками.
    5. magic_quotes - сразу нах.
    6. обязательна предварительная обработка полученных данных перед их включением в SQL (проверка длины, вырезание данных, не подходящих под формат, поиск ключевых SQL-слов и их фильтр, вырезание HTML).

    В этом языке еретиков (похапе) полно функций самого разного назначения. Все, что я написал выше, можно с успехом реализовать коротеньким кодом.
     
  10. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    Только для сомнтиельного юзер-френдли. С точки зрения безопасности ничего не дает.
    Вот это дело не всегда благодарное. Зачастую гораздо рациональнее делать приведение переменной ку нужному виду и пихать переменную куда надо, при этом даже не задумываясь о том что изначально было в параметре. А уж если там была какая-то фигня, то это проблема хакера а не наша. Всеравно на всякие проверки надеяться не стоит. Если это интежер - то intval. Если неотрицательный то еще и abs. Если это поиск в SQL запросе, то просто оформляем его в соответствии со стандартом SQL, а уж что там хотели туда передать нас не волнует. и т.д.
    Нафиг-нафиг.. Как раз не так.
    Полная фигня. Никаких проверок и упаси боже вырезаний. SQL придумали не дураки. Экранируя спец. символы (возможно только два варианта - LIKE-стайлэкранирование при поиске и неLIKE-стайл экранирование - во всех прочих случаях) вы просто сформируете правильный запрос и передадите его на сервер. А уж что было в этом запросе вас не волнует. Представьте теперь ваш мега-фильтр как обработчик форм на каком-нибудь скрипт-кидди форуме где все обсуждают SQL-инъекции - потеха-то будет а не дискуссия.
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.242
    пожалуй, самая опасная вещь - это работа с фс: нужно контроллировать, чтоб никакой лабуды извне не закатали и, самое главное, не было возможности запуска ентой хрени:)
     
  12. satrau

    satrau Александр

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    229
    в любом случае от проффи нет защиты 100%. Если не через этот скрипт сломают, так через другой.
    Притом не стоит забывать, что защита должны быть адекватной - Если данные стоят 30 рублей, то нет смысла городить защиту суммой в 1000р.
    Самый простой способ отсеять армию недохакеров - использовать только $_POST и забыть про $_GET.
    Так же стоит использовать минимально необходимое кол-во переменных, которые получают данные от клиента.
    И в добавок, разграничение прав доступа.
    Так как, чем проще система, тем меньше в ней ошибок - этот закон работает уже тысячи лет.
     
  13. Novi4ek

    Novi4ek New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2007
    Сообщения:
    317
    Ненадо никакой навесной защиты. Если ты понимаешь что ты делаешь то никаких ошибок не будет и хакер не пройдет. вернее он не пройдет до тех пор пока не задействует уязвимость какой-то программы, которой вы беспрекословно доверяете (тот же веб-сервер или пхп), ну или пока он не решит долбить вас с помощью грубой силы (досы/брутофорсы) - тут уж без навесной защиты не обойтись.
     
  14. Постигающий

    Постигающий New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2006
    Сообщения:
    35
    Novi4ek
    А что ты подразумеваешь под LIKE-стайл экранированием?