ФорумПрограммированиеPHP для идиотов → Проверка ссылки в input

Проверка ссылки в input

  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 29 мая 2008 г. 11:53

    Плз, подскажите:

    Как проверить, является-ли ссылка на внешний ресурс изображением…
    Именно изображением, а не скриптом и не переименованым в
    формат изображения скриптом ??
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 29 мая 2008 г. 12:02, спустя 9 минут 3 секунды

    Зачем?
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 29 мая 2008 г. 12:09, спустя 6 минут 8 секунд

    AlexB, хочу к примеру чтобы пользователь мог загрузить свою картинку,
    но при этом не загрузил мне на сайт исполняемый скрипт :\

    Подскажите кто-небудь!
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 29 мая 2008 г. 12:25, спустя 16 минут 20 секунд

    1. Ну, вообще-то основная защита от загрузки исполняемых скриптов — банально не исполнять их. Зачем вообще исполнять загружаемые картинки?

    2. Причем тут ссылка на внешний ресурс? Пользователь грузит картинку на ваш сервер, на нём её и проверяйте.

    3. Можно создать файл, который будет одновременно корректной картинкой и корректным скриптом.
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 29 мая 2008 г. 12:31, спустя 6 минут 30 секунд

    2. Причем тут ссылка на внешний ресурс? Пользователь грузит картинку на ваш сервер, на нём её и проверяйте.

    я имею ввиду не загрузку файла на мой сервер,
    а текстовую ссылку на картинку с другого сервера.

    vasa_c, можно подробней по поводу третьего пункта ?
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 29 мая 2008 г. 12:46, спустя 14 минут 10 секунд


    я имею ввиду не загрузку файла на мой сервер,
    а текстовую ссылку на картинку с другого сервера.
    Ты все-таки определись … сообщение назад ты говорил именно о загрузке "мне на сайт".
    Еcли все-таки речь идет о ссылке на другой сервер, то повторяю вопрос: "Зачем тебе понадобилось проверять ее тип?".
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 29 мая 2008 г. 12:48, спустя 2 минуты 30 секунд

    Проверки удаленного файла абсолютно бессмысленны.
    Злой дядя положит там нормальную картинку, а после того, как вы её проверите, сменит на свой противный скрипт.
    Это не вдаваясь в подробности, что это за скрипт такой и чем он может навредить.
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 29 мая 2008 г. 13:34, спустя 45 минут 29 секунд

    Ты все-таки определись … сообщение назад ты говорил именно о загрузке "мне на сайт".
    в первом посте я достаточно понятно выразился…
    слово "загрузить" имеет много значений, и абсолютно не обязательно связано со словом "файл".

    ладно, я понял. подскажите хотябы как проверить что ссылка на картинку,
    всысле что конечное расширение jpg там или gif ?
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 29 мая 2008 г. 13:41, спустя 7 минут 35 секунд

    Зачем? :) :):):):):):):):):)
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 29 мая 2008 г. 14:13, спустя 31 минуту 49 секунд

    preg_match ('/^(.+)(\.jpg|\.gif|\.png)$/is', $link);

    Но действительно, зачем?
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 29 мая 2008 г. 15:35, спустя 1 час 21 минуту 41 секунду

    Зачем?
    Зачем? :) :):):):):):):):):)
    Но действительно, зачем?

    объясните мне, что зачем? :)
    чтобы если загрузили не картинку выдать сообщение, что это не картинка!
    опять зачем? :)
    чтобы вместо картинки не вписали ссылку со скриптом, который может что-нить плохое натворить
    (ну к примеру тот-же сниффер, помнится на античате он в виде gif-файла был)
    но вы все так убедительно зачемкаете, что я начинаю сомневаться в своих опасениях…

    поясните, чем чревато если:

    <form action=…/… method=POST>
    <input type=text name=image>
    </form>
    ———————————
    <?
    $im=$_POST['image'];
    print("<img src=$im>");
    ?>


    или я напрасно беспокоюсь ?
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 29 мая 2008 г. 15:55, спустя 20 минут 49 секунд

    <img src="http://hacker.com/hack.php">
    Какой ужас, правда? =) Ничего, что hack.php выполнится на hacker.com? =)
    Другое дело то, что
    Можно создать файл, который будет одновременно корректной картинкой и корректным скриптом.
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 29 мая 2008 г. 21:33, спустя 5 часов 37 минут 30 секунд

    В старых IE, кажется можно было в качестве файла картинки отдать JS и он выполнялся. Или просто: <img src="javascript:.." />. Или не можно было.
    В 7-м походу всё нормально, но проверить наличие вначале "http://" (или подставить самому) не помешает.

    Ну и человек загрузивший картинку на ваш сайт сможет собирать некоторую статистику по его посещениям.
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 29 мая 2008 г. 23:11, спустя 1 час 38 минут 27 секунд

    Еще пять копеек.
    ° Exploden °, пойми простую вещь. В твоем случае, тебе на сайт загружают не картинку, файл или ссылку, а код. И если ты хочешь что-то проверять, то проверяй именно код, на наличие в нем тегов, на наличие в нем http:// и.т.д. и.т.п., а не какую-то картинку на удаленном сервере. Ты же упорно спрашиваешь именно про проверку типа удаленного файла. Поэтому тебя упорно спрашивают зачем тебе это надо. В общем учись правильно формулировать вопросы. Правильный вопрос - уже половина решения проблемы.
  • exploden

    Сообщения: 81 Репутация: N Группа: Кто попало

    Spritz 30 мая 2008 г. 1:32, спустя 2 часа 20 минут 42 секунды

    Спасибо за советы и ответы!
    Попробую корректно сформулировать еще вопрос )

    Что прописать, чтобы <body background=temp.gif> (temp.gif width=100 height=100) не дублировал
    фоновую картинку по всему телу сайта, а растягивал ее по его размеру (если такое возможно) ?
    А если не возможно, как такое зделать с <table background=' '> ?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!