Задать вопрос
@pillson

Не отрабатывает htmlspecialchars php?

пытаюсь запретить выполнение скрипта в поле (xss) защита, но что то не отрабатывает
постом принимаю значение поиска htmlspecialchars($_POST['search'], ENT_QUOTES);
но скрипт все равно можно вывести, в чем может быть проблема?

public function actionSearch() {
         if(isset($_POST['search'])){
             $seacrh = htmlspecialchars($_POST['search'], ENT_QUOTES);
         }
         if(isset($_POST['searchMobile'])){
             $seacrh = htmlspecialchars($_POST['searchMobile'], ENT_QUOTES);
         }
         if(isset($_POST['searchFmobile'])){
             $seacrh = htmlspecialchars($_POST['searchFmobile'], ENT_QUOTES);
         }
         if (!empty($seacrh)) { 
            $trimSearch = htmlspecialchars($seacrh, ENT_QUOTES);
            if (strlen($trimSearch) < 3) {
                $text = '<p>Слишком короткий поисковый запрос.</p>';
            } else if (strlen($seacrh) > 50) {
                $text = '<p>Слишком длинный поисковый запрос.</p>';
            } else { 
             $searchFrom = Product::getSearch($trimSearch);
        }    }
        $title = 'Вы искали: ' . $trimSearch . ' - мы кое-что нашли';
        $description = 'Список товаров по запросу ' . $trimSearch;
        require_once (ROOT . '/views/site/search.php');
        return true;
    }
  • Вопрос задан
  • 94 просмотра
Подписаться 1 Простой 8 комментариев
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
скрипт все равно можно вывести
в чем может быть проблема?

Наверное в том, что ты не понимаешь что такое HTML и что делает htmlspecialchars()?
Что, по-твоему, эта функция должна делать, как не выводить твой скрипт? Кидаться на него с кинжалом и криками Аллах Акбар?

Прочти внимательно в документации, что делает эта функция, там все написано, с примерами.
Ну и надо на базовом уровне понимать HTML - что такое теги, сущности, спецсимволы.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Во первых, как заметил Adamos, следите за именованием переменных, $seacrh это конечно сильно...
Во вторых -
но скрипт все равно можно вывести
да, можно вывести, но нельзя выполнить, о чем вам справедливо заметил FanatPHP, почувствуйте разницу.

Вообще, все плохо. Для очистки данных от тегов есть strip_tags(), но вы почему то упорно тупите и не читаете документацию и не пользуетесь поиском из принципа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы