Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Убрать кавычку с GET-запроса

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: фильтрация кавычек в URL, защита от инъекций
Panoptik
Отправлено: 11 Ноября, 2011 - 00:38:03
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




суть в следующем. На всех нормальных сайтах (в том числе и на этом) если добавить в конце ЮРЛ одинарную кавычку " ' " то скрипт благополучно ее переваривает и игнорирует.

я работал с фреймворком и отправляю ему в строке например вот такой запрос http://my[dot]site/page/main - всё работает отлично, НО если добавить в конце знак ' то браузер меня выкидывает на страницу mail.ru по поиску данной URL, подскажите может как можно обработать $_GET['page'] или какие настройки в .htaccess добавить. это всё же как никак некоторая защита, по крайней мере от сбоев и злых намерений.

и еще к этому интересует такой вопрос. какой ответ получает браузер когда отправляется к mail.ru (или любому другому поисковику по умолчанию) ??

благодарю за подсказки и ответы


-----
Just do it
 
 Top
OrmaJever Модератор
Отправлено: 11 Ноября, 2011 - 00:46:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Panoptik пишет:
НО если добавить в конце знак ' то браузер меня выкидывает на страницу mail.ru по поиску данной URL

потому что в правеле в .htaccess не предусмотрена кавычка в запросе, а почему выкидывает на mail.ru непонятно, ведь должно просто 404 показывать.
Panoptik пишет:
и еще к этому интересует такой вопрос. какой ответ получает браузер когда отправляется к mail.ru (или любому другому поисковику по умолчанию) ??

Неповерите, он получает код 200 и код страницы страницу (ну и там нужные заголовки)


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Panoptik
Отправлено: 11 Ноября, 2011 - 00:55:18
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




Благодарю, но всё же можно по подробнее как в .htaccess обойти этот недочет, а то я с регулярками не очень дружу


-----
Just do it
 
 Top
OrmaJever Модератор
Отправлено: 11 Ноября, 2011 - 01:17:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




1) разрешать кавычку не безопасно
2) покажите какая там регуляка подскажу как добавить, так я немогу обьяснить куда её поставить.
3) а почему например не зделать переадресацию на 404 ошибку или 403? Ведь это будет красивее


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Panoptik
Отправлено: 11 Ноября, 2011 - 01:22:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. AddDefaultCharset UTF-8
  2.  
  3. Options +FollowSymLinks
  4. IndexIgnore */*
  5. RewriteEngine on
  6.  
  7. # if a directory or a file exists, use it directly
  8. RewriteCond %{REQUEST_FILENAME} !-f
  9. RewriteCond %{REQUEST_FILENAME} !-d
  10.  
  11. # otherwise forward it to index.php
  12. RewriteRule . index.php
  13.  
  14.  


Вот содержимое .htaccess регулярок как раз тут и нет.
Разрешить я ее не хочу. просто я хочу ее либо игнорировать либо убрать, чтобы браузер действительно сделал вывод 404. Вот именно и это есть конечная цель. если пользователь намеренно вводит кавычку, то можно ему отомстить выводя 404 или проигнорировав вывести содержимое соответствующее адресу без "виновницы" проблем


-----
Just do it
 
 Top
OrmaJever Модератор
Отправлено: 11 Ноября, 2011 - 01:37:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




хмм.. а это точно тот htaccess? во-первых этот файл не может делать такой ЧПУ http://my.site/page/main, во-вторых он не может както редиректить кавычки.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Panoptik
Отправлено: 11 Ноября, 2011 - 09:06:36
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




прошу прощения за некое упущение. суть в том что это всё дело используется во фреймворке yii. У него есть некий модуль/библиотека - url-менеджер. задав ему правила в таком формате:
CODE (htmlphp):
скопировать код в буфер обмена
  1.            
  2.          urlManager'=>array(
  3.             'urlFormat'=>'path',
  4.             'rules'=>array(
  5.                 '<furl:\w+>'=>'site/index',
  6.                                 '<url>/page/'=>'post/list',
  7.                                 '/category/<url>'=>'post/index',
  8.             ),
  9.         ),

он сам разбивает url на части $_GET.

так как вникнуть в суть кодов разработчиков это дело долгое, хотелось бы просто предварительно убирать зловредную кавычку с URL например такого вида (http://my.site/page/main') так чтоб ее там не стало и на обработчик ушел обыкновенный вид http://my.site/page/main.

вот кусок кода в контроллере который встречает этот юрл. если есть возможность в нем как то повлиять на исходный результат, то тоже большое спасибо за ответы
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  if(isset($_GET['furl']))
  3.                 $furl = htmlspecialchars(trim($_GET['furl']),ENT_QUOTES);
  4.                 else $furl = 'main';
  5.  

(Отредактировано автором: 11 Ноября, 2011 - 09:10:19)



-----
Just do it
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB