|
|
|
| скажите пожалуйста
вызов
RewriteRule ^([a-z0-9]+)/?$
эдентичен ли:
$_GET[$key] = ereg_replace("[^a-z^0-9]", "", $val);
??? | |
|
|
|
|
|
|
|
для: moonfox
(09.01.2008 в 18:18)
| | Нет, правила RewriteRule не изменяют значения GET-параметров - они изменяют только внешний вид URL-запроса. | |
|
|
|
|
|
|
|
для: cheops
(10.01.2008 в 14:19)
| | как тогда быть в адресной строке я имею site.ru/basic/1/2/5
если менять эти значения то в запрос к мусклу передаються неверные значения.. а использование ereg_replace или str_replace что-то не к чему не приводит потому что в адресной строке нет переменых а их значения... как тут избежать инъекцию? | |
|
|
|
|
|
|
|
для: moonfox
(09.01.2008 в 18:18)
| | > RewriteRule ^([a-z0-9]+)/?$
Ну и где подстановка после паттерна?
> как тут избежать инъекцию?
mod_rewrite и HTTP-сервер вообще не формирует SQL-запросы к Вашей СУБД, поэтому тут SQL Injection никаким боком. Для того, чтобы избегать подобной уязвимости, нужно научиться правильно решать вот эту задачу: http://softtime.ru/info/task.php?id_article=110 | |
|
|
|
|
|
|
|
для: Unkind
(10.01.2008 в 22:35)
| | хех...
вот я имею в хтакцессе
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/?$ index.php?page=$1&lang=$2&tbl=$3&tpl=$4&sort=$5&arr=$6
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/([0-9]+)/([0-9]+)/?$ index.php?page=$1&lang=$2&tbl=$3&tpl=$4
|
до этого я не использовал коротких адресов и имелл сылки типа
index.php?page=basic&lang=ru&tbl=3&tpl=4&sort=1&arr=1
естественно значения переменых получаем из гет и формируем с этими даными заппрос на выборку к MYSQL...
ранее я использовал обработку значений переменных GET
foreach ($_GET as $key => $val)
{
$_GET[$key] = ereg_replace("[^A-Za-z^0-9]", "", $val);
}
|
сейчас в адресной строке нет имен переменных а только их значения... и ereg_replace если я не ошибаюся не обрабатывает их значений.... следовательно можно подставлять все символы в строку к переменным...
как мне сейчас оставив короткие адресса обрабавтываеть значения GET чтобы не пропускать не желательных символов..? | |
|
|
|
|
|
|
|
для: moonfox
(11.01.2008 в 08:38)
| | не правильно воспринял походу результат работы скрипта
у меня строка
/basic/ru/1/2/1/1
обратится по имени к переменой GET можно
например значение 2 это переменная $tpl
echo $_GET['tpl']; даст 2
но если написать в строке
/basic/ru/1/2+2/1/1
то выдает Невозможно найти страницу
я так понил это mod_rewrite не может преобразовать строку....
вот так вроде
([^/.]*)
пропускает все символы и срабатывает ereg_replace
скажите стоит так делать или лучше пусть остаеться старый шаблон преобразований но переадресовывать на свою страницу с ошибкой?
как переадрисовывать? | |
|
|
|
|
|
|
|
для: moonfox
(11.01.2008 в 08:55)
| | Лучше, конечно, позволять вбивать только цифры. Зачем давать взломщику надежду на что-то?
А сам PHP-код никак не должен меняться. То есть должна быть старая обработка, т.к. все равно можно обратиться к скрипту по старому варианту (просто передать данные через QUERY_STRING).
Кстати, можно изменить подстановку на "index.php?%{QUERY_STRING}&page=$1&lang=$2&tbl=$3&tpl=$4", чтобы можно было задавать какие-то переменные через QUERY_STRING в дальнейшем.
И ereg_replace использовать не надо. Во-первых, насколько я знаю в PHP6 POSIX-регулярные выражения исключат, во-вторых, тут не нужно регулярные выражения вообще.
Если уж вдруг Вы точно уверены, что все переменные, переданные методом GET должны быть целыми числами, то можно сделать так:
<?php
$_GET = array_map(create_function('$a', 'return is_array($a) ? 0 : intval($a);'), $_GET);
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(11.01.2008 в 14:36)
| | если не использовать ereg_replace
как обезопасить передаваемые значения из get?
использовать mysql_escape_string ? | |
|
|
|
|
|
|
|
для: moonfox
(11.01.2008 в 14:55)
| | >если не использовать ereg_replace
>как обезопасить передаваемые значения из get?
А я что выше написал?
> использовать mysql_escape_string ?
http://softtime.ru/info/task.php?id_article=110 | |
|
|
|
|
|
|
|
для: Unkind
(11.01.2008 в 15:02)
| | спасибо | |
|
|
|