Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 860
от 06.01.2008, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 446, Экспертов: 45
В номере:Вопросов: 1, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 116539: Здравствуйте! Помогите с получением и кодированием url текущей страницы. ( С прошлого года мучаюсь. ). Есть у меня форма на некой страничке. Форма как положено <form action='...' method='post'> И вот мне нужно в это ac...

Вопрос № 116.539
Здравствуйте!

Помогите с получением и кодированием url текущей страницы. ( С прошлого года мучаюсь. ).

Есть у меня форма на некой страничке. Форма как положено
<form action='...' method='post'>
И вот мне нужно в это actioн прописать имя страницы, с адресом и текущими параметрами. Тут-то и начинаются проблемы!

$action = urlencode(substr($_SERVER["REQUEST_URI"], 1));
Путь сохраняется, но теряются параметры. Если же без кодирования,
$action = substr($_SERVER["REQUEST_URI"], 1);
то легко можно взломать, введя всякую чуш в адресную строчку.

Незнаю, где-то в настройках моего php включена опция и делается экранирование, опасных символов. По этому вреда особого не получается пречинить, но страницу можно испаганить адресом:
index.php?str='>this%20is%20hack.<!

Но эта опция вродебы может быть отключена, и тогда получится огромная дыра.

Подскажите, что можно сделать. Не перебирать же мне все параметры страницы!

Я могу заменить угловые скобки на соответствующие коды, но может ещё, что нужно заменять?

Повторюсь, адреса страницы с формой я не знаю, поскольку функция рисует формы на разных страницах. Списка параметров у меня тоже нет.
Про значение по умолчанию атрибута action я тоже знаю, но мне оно нужно в явном виде.

Приложение:

Отправлен: 01.01.2008, 15:34
Вопрос задал: Талипов А Н (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Griffon
Здравствуйте, Талипов А Н!
Выполняете все необходимые подготовки URL
Далее... например
$url = 'http://username:password@hostname/path?aa=1&bb=2&id=231";
тогда
$myquery = parse_url($url));
$myquery = $myquery['query'];
Либо получить строку запросов можно через глобальную переменную $_SERVER.
$myquery = $_SERVER['QUERY_STRING'];

получаете строку типа : "aa=1&bb=2&id=231"
далее...
parse_str($myquery ,$output);
echo $output['aa']; // 1
echo $output['bb']; // 2
echo $output['id']; // 231

Далее используя foreach($output as $i => $value) вы можете добавить к форме скрытый элемент с необходимыми параметрами.
Ответ отправил: Griffon (статус: 1-ый класс)
Ответ отправлен: 01.01.2008, 16:01
Оценка за ответ: 4
Комментарий оценки:
Не то.Идейка о разборе параметров таким образом излишня, их можно спокойно прочитать в массиве $_GET.
Я там на минифоруме скинул примерный скрипт(сейчас мой рабочий вариант на него похож принципом), это работает именно как мне нужно.
Ваш ответ сподвиг меня для написания этих четырёх строк кода, за что и благодарю.

Отвечает: Миленин Александр
Здравствуйте, Талипов А Н!
1) Вы можете вообще не указывать action, тогда форма будет отправляться в текущую страницу со всеми параметрами.

2) Если вы используете mysql, можите экранировать опасные символы функцией string mysql_escape_string ( string unescaped_string). В сочитанинии с htmlspecialchars() будут заэкранированы все опасные символы.

3) Если вы не пользуетесь mysql или не можите воспользоваться mysql_escape_string, воспользуйтесь htmlspecialchars(), а затем удалите из строки символы " ' " и " ` ".

P.S. "Кодирование" URL с помощью urlencode() не прибавляет вашим скриптам безопасности. На самом деле вы ничего не можите сдалать на стороне клиента, чтобы обезопасить ваши скрипты, вам необходимо создавать скрипты, которые будут корректно реагировать на любой бред, получаемый извне.
Ответ отправил: Миленин Александр (статус: 9-ый класс)
Ответ отправлен: 01.01.2008, 18:15
Оценка за ответ: 3
Комментарий оценки:
Мысли всё дельные, и я с вами согласен,только вот далеко от моего вопроса. Речь ведь именно о защите. Причем здесь обработка на стороне клиента не знаю.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.68 от 04.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное