Как WordPress позволяет размещать код через textarea - PullRequest
0 голосов
/ 23 августа 2011

Недавно я задал вопрос о том, что в стеке LAMP запрещена публикация тега через textarea, запрос прерывается apache, я думаю, поскольку поля $ _POST, $ _GET и $ _REQUEST все пусты. Мне было просто интересно, как WordPress позволяет пользователям добавлять виджеты, обновлять файлы шаблонов и создавать страницы, используя элемент управления textarea, который допускает тег .

UPDATE Я создал запись в виде вставки для формы здесь: http://pastebin.com/1Jaz9rRz

По сути, это автоматически сгенерированная форма, я скопировал ее из исходного кода.

UPDATE

Я перенес код для тестирования на сервер здесь: http://www.007softwares.com/testing.php

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

Ответы [ 4 ]

1 голос
/ 23 августа 2011

Это, безусловно, какой-то ошибочный механизм безопасности либо в вашем браузере, либо (что более вероятно) на сервере.

Как уже было сказано, проверьте Suhosin, используя phpinfo():

<?php phpinfo(); ?>

Вы должны увидеть упоминание слова "Suhosin" или "Hardened PHP" в результирующем выводе.

Также я не исключаю, mod_security - ошибки, которые, как вы говорите, возникают при добавлении строк, отключающих его в .htaccess, могут иметь другую причину. Например, можно настроить, чтобы невозможно было отключить через .htaccess.

Спросите своего веб-хоста, есть ли у него что-либо с точки зрения безопасности, которое может быть причиной этого.

0 голосов
/ 24 августа 2011

Когда пользователь отправляет тег

, он работает как положено.Когда пользователь отправляет тег , возвращается 404.Это наводит меня на мысль, что apache использует mod_security с конфигурацией, похожей на:

SecFilterDefaultAction "deny,log,status:404"
SecFilter "<script" 
0 голосов
/ 23 августа 2011

Ваш phpinfo () говорит, что string.strip_tags зарегистрирован как фильтр потока.Это может быть причиной вашей проблемы.

Кроме того, расширение фильтра может быть настроено на удаление, хотя это не так вероятно.

0 голосов
/ 23 августа 2011

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

...