За последние 24 часа нас посетили 14826 программистов и 1725 роботов. Сейчас ищут 1069 программистов ...

Защита приложений, написанных на PHP

Тема в разделе "PHP для новичков", создана пользователем Psih, 13 окт 2008.

  1. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    PeaceDuke
    Во-первых, проверять регуляркой в данном случае - плохо. Во-вторых, проверка рефера - не есть гуд, потому что некоторые фаерволы его блокируют.

    Любой яваскрипт хорошо обходится через адресную строку.
     
  2. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Зачем его обходить? достаточно отключить яваскрипт и этот метод сам себя обойдет :)
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    karakh
    Обычно формы, которые проверяются через JS, сабмитятся тоже через JS.
     
  4. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Kreker
    Спорно. Как раз обычно формы которые проверяются через JS все еще в состоянии как-то работать при отключенном js, то есть и сабмититься тоже. Хотя конечно всякое бывает... :)
     
  5. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    karakh

    да это обычно на таких сайтах, которые трогать - себя не уважать :)
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    А intval($var) и (int) $var - работают одинаково?
     
  7. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Результат один.
     
  8. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    sobachnik
    Первое - вызов функции (поэтому чуть-чуть, но тормознее), второе - конструкция языка, поэтому ее нельзя использовать в качестве callback-а.
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Спасибо! :)
     
  10. tbazadaykin

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

    С нами с:
    13 дек 2008
    Сообщения:
    2
    Симпатии:
    0
    sobachnik хитрец. у кого же еще спрашивать как защитить скрипт от взлома как не ухакеров которые его потом будут взламывать...
     
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Не совсем уязвимость, но ошибка -- не проверять правильность введенной даты. Читать в логе
     
  12. Так и хочется взять и уебать...
     
  13. sylex

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

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
  14. sylex

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

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    честно и откровенно так :D
     
  15. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    я!!! тоже!!!! за!!! безопасный!!! чтоб идиоты не плодились!!!!1111адинадинадин
     
  16. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Потому что копипаст с тысячи других форумов. За эти файлы деньги получают.
     
  17. vitaver

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

    С нами с:
    10 мар 2009
    Сообщения:
    22
    Симпатии:
    0
    Адрес:
    Хабаровск
    Ой! Да сколько денег получают? За 1000 скачиваний 17$ вроде, да? Большие деньги? Это во первых!
    Во вторых попробуй найди в других местах эти файлы. Я скачал также как и вам предлагаю. В кугле нашел и скачал. Мне покупать эти книги не начто, кроме этих мест их не где не встречал. Даже спасибо скажу человеку который их туда выложил и дал возможность их качать. Я лично не плачу за скачивание, у меня безлимил. качаю в 20 кбит/сек и мне достаточно.
    И речь не отом, что это платные файлы или безплатные. Речь о безопасности созданом, ведь теряешь больше когда ломают твое творение, чем платно скачаешь фаил!!!!!!!!!! Не сопоставимо!!!!

    Да, я выложил эту ссылку и на другом форуме, и не на 1000, а только здесь и на там. Знаешь, даже тему создал о том чтоб народ в нее выкладывал свои соображения по поводу безопасности. Все где я всречал, обсуждение кончаеться на нескольких советах, в оснавном поверхнастно.

    И если вы, господа, считаете что я на вас решил денег заработать, то вы ошибаетесь. Я решил их не потерять, и вместе с вами.
     
  18. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Программирование не приносит ПРОФИТ? Это какое-то неправильное программирование :)


    vitaver ссылка удалена. Во-первых потому что не работает, во-вторых потому что есть спец. тема для литературы в которую ее и можно кинуть, если Вы действительно уверены в нужности и правильности данного материала.

    Ну если человек кинет ссылку на хорошую литературу, которую даже захочется потом купить в бумажном варианте, то ведь все получать ПРОФИТ: я в знаниях, автор в гонораре за бумажную книгу, человек кинувший ссылку пару центов за клик ;) Чего в этом плохого?
     
  19. vitaver

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

    С нами с:
    10 мар 2009
    Сообщения:
    22
    Симпатии:
    0
    Адрес:
    Хабаровск
    Хорошо! Только вот удалена не та ссылка. Удалено мое сообщение о том что она неисправна и о призвании найдти эту книгу в кугле. Исправь пожайлуста свою оплошность и удали правельное сообщение!

    Я ведь только учусь, по этому и пишу в тему для начинающих. Чуть позже обязательно буду зарабатывать денег на изученом мною програмировании. Кстати ответье на мой вопрос косающего работы цикла for. Помогите начинающим. Тема так и називаеться: Работа цикла for.
     
  20. El Loco

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

    С нами с:
    26 дек 2008
    Сообщения:
    41
    Симпатии:
    0
    у меня тоже вопрос.
    к примеру: www.site.ru/?page=main
    тут писали про фильтрацию с помощью mysql_real_escape_string().
    мне советовали вырезать из строки левые символы таким образом:
    PHP:
    1. <?
    2. if(isset($_GET['page']) && !empty($_GET['page'])) {
    3.     $page = ereg_replace('[<>\'#\)\(]', '', $page);
    4.     $page = htmlspecialchars($page, ENT_QUOTES);    
    5. }
    6. ?>
    а все ли символы, которые режутся выше регуляркой, экранирует эта функция?
     
  21. sylex

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

    С нами с:
    9 ноя 2008
    Сообщения:
    625
    Симпатии:
    0
    Адрес:
    Омск
    El Loco
    эх ты :)
     
  22. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    ЕлЛоко, извини, но тебе посоветовали дерьмо :) начиная с того, что isset тут не нужен, достаточно проверки на !empty, а хтмлспешиалс чарз сработает впустую, потому что все теги вырезаны устаревшей функцией ereg_*, которую в шестой части удалят.
     
  23. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Ну и представь, что останется от сообщения , которое экранированно таким образом:
    "я не согласен с утверждением в сообщений #33, потому-что, все-таки, (33/34) > (32/33)"
     
  24. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Ну а если пейдж - это номер страницы, до достаточно сделать так:
    PHP:
    1. <?
    2. $page = !empty($_GET['page']) ? intval($_GET['page']) : 0;
    3.  
    это и быстрее и надежнее и очевиднее и в дальнейшей версиях будет работать одинаково.
     
  25. El Loco

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

    С нами с:
    26 дек 2008
    Сообщения:
    41
    Симпатии:
    0
    Спасибо за советы.
    Сделал так. Целые числа фильтрую так:
    PHP:
    1. <?
    2. $id = !empty($_GET['id']) ? intval($_GET['id']) : 1;
    а строковые параметры так:
    PHP:
    1. <?
    2. $page = !empty($_GET['page']) ? mysql_escape_string($_GET['page']) : 0;
    3. // 0 - это я для своих целей...
    этого дожно хватить насколько я понял.

    странно, но у меня ф-я mysql_escape_string работает, а mysql_real_escape_string - нет. это может зависеть от конфигурации сервера?
    я почитал, что в принципе париться особо не стоит, они обе дадут один и тот же результат.

    еще читал, что спец. символы для sql-инъекции можно подставить в hex-виде. подробностей не помню. возможно ли это?

    вообще, я бухгалтер, так что не ругайтесь :)