За последние 24 часа нас посетили 17525 программистов и 1727 роботов. Сейчас ищут 916 программистов ...

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

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

  1. Elkaz

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

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    RomanBush
    Дофига. Все зависит от тематики ресурса.
     
  2. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Elkaz
    хоть один?
     
  3. sword dancer

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

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
  4. EvelRus

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

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
  5. shurastik

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

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    может это дело вкуса, но я делаю проверку на допустимые значения

    меньше шанс что-нибудь упустить

    PHP:
    1.  
    2. <?php
    3.   if (abs((int)$_GET['id']) != '') {
    4.       //работаем
    5.    } else header('тра-ля-ля 404 .и.т.д.');
    6. ?>
    7.  
     
  6. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    угу. Уели. А теперь покажите мне здесь хоть одного "спрашивающего совета", который будет писать скрипты для этих систем? Для кого, собственно говоря, мы и рассуждаем, как лучше делать.
     
  7. Elkaz

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

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    shurastik
    if (abs((int)$_GET['id']) != '') {

    abs - это число по модулю.
    int - это целое число. Если число не целое возращает 0.

    Так что либо abs либо int.
     
  8. Elkaz

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

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    RomanBush
    Поисковые системы это лишь пример.
    Поверь, есть корпоративные сайты, которым все равно, какое место они занимают в рейтинге. Главное что бы был сайт, давать клиентам. Сам делал таким (советы я тоже спрашиваю, т.к считаю себя новичком). Адреса тоже могу подкинуть, но что это даст? :)
     
  9. Clone

    Clone Guest

    По сути ничем от закрытого не отличается. Нормальные сайты должны следовать стандартам, в том числе HTTP.
     
  10. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Сайт в любом случае должен быть нормальным не зависимо от того на что плевать его хозяину !!!
     
  11. Elkaz

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

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Clone
    Иди это заказчику скажи :)

    Vladson
    Смотря что считать нормальным.
    Данная ситуация:
    if ((int) $_GET['page'] < 1) $page = 1; - является нормальной.
    Тут уже упирается на вкус и цвет. Что не правильного в данном подходе?
    Про оптимизацию сайта не надо.
     
  12. Clone

    Clone Guest

    Elkaz, а Вы абстрагируйтесь от PHP-кода и представьте структуру страниц Вашего сайта извне.
     
  13. Ruzzz

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

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    Elkaz
    не пойму зачем strlen, если есть уже (int)? если предполагается число проверять на лимит кол-ва цифр, то не лучше ли это делать до (int)?

    А теперь по теме.
    Злоумышленник которого стоит опасаться, если не выдать ему страницу ошибки и так поймет что используют значения по дефолту, так как явно изменяет посылаемые значения, а значит ждет реакции на не стандартную ситуацию, в этом случае мы ничиго не выигруем перед злоумышлеником выдавая страничку об ошибке, (без детальной информации а ориетрированную на ботов) или подставляя значения по умолчанию. Но наоборот на основе того что у нас есть по умолчанию он может делать выводы о логике :) вот чота так я думаю )

    Я за ошибки ориент. на поисковых ботов, для простого пользователя "глюк" с посылаемыми данными думаю минимален(если вообще не стремится к нулю), покрайней мере если этот пользователь нормально работает, и через нормальный браузер :) А польза от оптимизации для поисковиков всетаки важна

    Вообще так подумать, жену например зовут Маша, а ты кричишь ей Оля, и она видя что Оли тут нет, думает что нада откликнутся :) Нормально будет если она скажет "Дурень, я Маша" (Ошибка! Оли тут нет!) :)
     
  14. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    1 - Два адреса одной страницы (10 и -10)
    2 - открой ка мне страничку с ID=7395739845739374950377456356374573543646345346
    Оптимизация не причём (она лишь побочный эффект) смысл в работе скрипта (в том что он должен работать, а не просто "запускатсья")
     
  15. AlexGousev

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

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Просто делайте сайт так, будто он сделан на HTML (я именно про серверную часть, а не про JS, CSS…).
     
  16. Ruzzz

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

    С нами с:
    11 фев 2008
    Сообщения:
    148
    Симпатии:
    1
    AlexGousev
    +1 :) вот точные слова!!! ха, кратко, но емко!!!
     
  17. Elkaz

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

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Vladson
    1. -10 неправильный запрос для переменной page. Следовательно берем его дефолтное значение - 1.
    2. strlen
    3. Согласен.

    AlexGousev
    +1. Просто я считаю, что выставление страницы ошибки сервера на злонамеренное действие пользователя вместо принятия какого-то дефолтного значения - это уже дело вкуса :)
     
  18. Ruzzz

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

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

    Наверное стоит "кричать" на явное "нападение" при неверных данных НЕ GET запроса, если же это GET, то выдавать ошибку с сообщением типа "Возможно вы имели ввиду: тут ссылка на то что было бы при подстановке значений по умолчанию" и далее Location через refresh. Ну а на НЕ GET можно смело сказать "Не фиг нас ломать". Думаю нормальный пользователь с нормальным браузером в такую ситуацию просто не попадет
     
  19. Elkaz

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

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Ruzzz
    Пусть индексируется как нормально :) Не. Одно дело
    $_GET['page'] = '-19083432423';
    и другое дело
    $_GET['page'] = 15; // но в базе, к примеру, такого не существует.
    Для такого надо выдавать уже сообщение о том, что такой ID не существует, вернитесь назад и попробуйте снова :)
    Хз. Я весь REQUEST фильтрую...
     
  20. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    А если у меня столько записей в базе ?
    (на этом форуме тоже когда-то было 30 сообщений на всех, а сейчас у тебя одного далеко за 300)
     
  21. Clone

    Clone Guest

    Elkaz, ну зачем лишнюю работу проделывать? Выдай ошибку - ибо нефиг. И ещё - подумай, зачем тебе одинаковый контент на разных страницах?
     
  22. shurastik

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

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    (int)$_GET['id'] - целое число может быть отрицательным, ведь так? Для этого и abs.

    а сообщения об ошибках, ИМХО - дело личное.
     
  23. Ambrella

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

    С нами с:
    10 ноя 2007
    Сообщения:
    206
    Симпатии:
    0
    Как вы относитесь к проверке данных через ereg?

    Код (Text):
    1. $str = $_GET["str"];
    2.  
    3. if (ereg ("1-9", $str)) {
    4. } else {
    5. $str = "1";
    6. }
     
  24. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Ambrella
    Для числовых значений тяжеловато будет (не принято так делать)
    (вообще лучше юзать preg так как он считается пошустрее)
     
  25. hugi

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

    С нами с:
    24 авг 2007
    Сообщения:
    30
    Симпатии:
    0
    По моему вы просто загоняетесь, на мой взгляд вырубать сценарии лишння трата времени - хакера это никак не остановит. Просто убираем из переменной все не нужны символы. Если во время работы происходит ошибка, просто выдаем её цифровой номер(или как вам уогдно её определить) и пускай хакер думает, что за ошибка 32. Еще можно перед каждой функцией поставить @. Сайт на мой взгляд должен работать стабильно, какую бы дрянь не пихали в get, post запросы. [/quote]