За последние 24 часа нас посетили 18530 программистов и 1747 роботов. Сейчас ищут 810 программистов ...

безопасность - выдавать ли ошибки?

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

  1. Ruzzz

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

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    Вот думаю так, проверять то что прислали в запросе, но если ошибка явно из-за того что подменены данные в форме(скрытие поля) или в строке браузера подменили ссылку (если метод get) то не париться и не выдавать подробный отсчет об ошибке, ведь у простого юзера такая ситуация сложится не могла. Как думаете?
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    должно быть дефолтное действие на такую ситуацию.

    нпример если тебе подсунули page=-1 или page='
    То page в таом варианте присваиваить 1

    $page = (int) GetFromRequest('page');
    if(empty($page)) $page = 1;

    я вот так делаю

    $page = GetVars::page('page',1);
    где в методе все обрабатывается

    ну и так далее...

    по сути твой скрипт должен всегда правлиьо отработать вне звисимости что ему подсунули и сообщений об ошибках быть В ПРИНЦИПЕ НЕ ДОЛЖНО.


    на крайная на момент отладки, но тогда ты сам гарантировано подсунешь не верные данные и все это можно реализовать единым методом класса. т.е. править в 1 месте
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  4. Ruzzz

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

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    Я больше тут, вопросы дублирую, потому как хочу большую аудиторию профи затронуть. Но слова "старик, ... ты уж определись где ты?" заставили себя предателем почувствовать! Странно, что в этом плохого. Я нашел ваш форум и "приписался" здесь, но изучаю и тот форум.

    За ваши ответы искренне спасибо!

    этот кусок кода:
    Код (Text):
    1. $page = (int) GetFromRequest('page');
    2. if(empty($page)) $page = 1;
    Аж понравился :) Вот в своем, который писал с нуля, в процессе "вечного усовершенствования" прихожу примерно к такому виду. Учусь )
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    ну мы там и тут и еще на нескольких форумах, так что разницы особой для тебя не будет. но пиши конечно. дело твое.
     
  6. Ruzzz

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

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    Значит для себя уяснил следующее:

    - сообщение об ошибках давать если они нужны как подсказки для пользователя, при вводе данных(например этот логин занят)
    - не давать ошибки, так как они покажут логику работы скрипта
    - иметь на все случаи значения по умолчанию
    - помнить, что просто так простой пользователь не будет менять строку Get запроса и тем более изменять данные в Post запросе
     
  7. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Вот я, например, на такие проверки вешаю die("Не надо нас ломать.");
     
  8. Ruzzz

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

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    :) Да я тоже решил что-то подобное делать ) и еще сделал заметку, в будушем подумать о выявлении таких ситуаций и их протоколировании - возможно как-то будет помогать. Я еще не знаю, но на всякий пожарный заметку сделал )
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    помнить ВСЕГДА что данные придут неправильные.
    правильные данные - значит повезло...
    =)
     
  10. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Это плохой вариант, ИМХО. "Хакер" НЕ должен видеть какие-то ошибки. Я придерживаюсь варианта, который уже предложил 440Hz. Т.е фильтровать все данные. Если $page = -1, к примеру, присвоить ей значение равное 1 (единице). Конструкцию die хорошо использовать только во время дебаггинга и в SQL запросах. Ну и при header:location надо использовать exit.
     
  11. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Придерживаюсь противоположного мнения, более того сервер при подсовывании в адрес id=-1 вместо того чтоб выдавать первую страницу должен вернуть либо 404 либо вовсе что по страшнее. (зачем сайту две одинаковые страницы по двум адресам, когда на сайте упоминается лишь один адрес ?)

    Глупейшее решение, поисковики и будут индексировать ваши страницы с фразами "Не надо нас ломать" и думать что это у вас контент такой...

    Я придерживаюсь философии что если значение числовое то надо делать так

    PHP:
    1. <?php // (для unsigned)
    2. if (!is_numeric($_GET['id']) || $_GET['id'] < 1) {
    3.    header('тра-ля-ля 404 .и.т.д.');
    4.    exit;
    5. }
    6.  
    7. // А уже потом в запрос безбоязненно вставлять $_GET['id']
    8. ?>
    PS Updated
     
  12. +Sten+

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

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    +1, только не 404, а какую-нибудь рандомную из 404, 403, 500 и тд. Пусть ипётся и думает что происходит после каждого варианта скулки =).
     
  13. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Даже одной из них вполне достаточно чтоб запутать человека не видевшего исходники
     
  14. Clone

    Clone Guest

    К мнению Vladson +1, сам пришёл к такому же выводу.
     
  15. EvelRus

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

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    а видевшему исходники - заказываем гроб =))))
     
  16. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Видивший исходники не будет и пытаться (будет изначально знать что это не сработает)
     
  17. sword dancer

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

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
    приложение должно реагировать адэкватно.
    запросил отрицательную страницу - получи 404 со сообщением о недопустимости отрицательных номеров страниц.
    думать нужно только о пользователе. хакер - тоже пользователь. он помогает вам найти уязвимости в вашей системе.
     
  18. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Из контекста мои слова не надо выдирать.

    Я die() ставлю на те места, на которые поисковик никогда в жизни не придёт.
     
  19. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Если я не правильно понял то поясни где именно я ошибся и я исправлюсь, пока ни я ни другие ответившие не заметили никаких "нестыковок"
     
  20. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Третий раз цитирую пост, на который я отвечал.
     
  21. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    А вот я сейчас дам ссылку на ваше сообщение
    http://php.ru/forum/viewtopic.php?p=86sajdhkashjd487 и подменю запрост GET а яндекс "склеит" эту ссылку со ссылкой на http://php.ru/forum/viewtopic.php?p=86 и будет думать что обе они правильные
     
  22. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    хм. Тоже верно. Буду думать. Спасибо.
     
  23. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Вот я изначально это и имел в виду.
     
  24. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Vladson
    Ну и что?
    Тут стоит небольшое отклонение - если сайту нужна оптимизация (на первом месте) и поднятие вверх по поисковым запросам поисковых ботов - тогда да, твой вариант предпочительнее, генерировать при неправильном запросе страницу с ошибкой. Если же сайту на это наплевать - то лучше отдавать страницу как есть. Т.е принять какое-то дефолтное действие.

    $page = (int) $_GET['page'];
    if ($page < 1 || strlen ($page) > $allowed_pages) $page = 1;

    Как-то так
     
  25. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    покажи мне хоть один сайт, открытый, а не с закрытым членством, которому наплевать на поисковики