Ошибка 403 при отправке формы - PullRequest
5 голосов
/ 19 января 2010

У меня проблема с формой в разделе администрирования моего сайта. Я использую его для изменения отображаемого текста HTML, он написан на PHP и подключается к базе данных MySQL.

echo "<form action=\"index.php?kat=infos&aktion=upd&kategorie=$kategorie\" method=\"POST\" enctype=\"application/x-www-form-urlencoded\">\n";
echo "<table border=\"0\">\n";
echo "<b>$kategorie</b>\n";
echo "<tr><td><b>Information:</b></td><td><textarea name=\"info\" cols=\"50\" rows=\"7\">$info</textarea></td></tr>\n";
echo "<tr><td><input type=\"submit\" value=\"Editieren\" /></td></tr>\n";
echo "</table>\n";
echo "</form>\n";

Если я введу несколько небольших предложений, таких как «Это только тестовый текст». и нажмите кнопку подтверждения, index.php примет данные и вставит их в базу данных, как и положено. Но если я ввожу более длинный текст, например, заявление об отказе от http://www.juraforum.de/disclaimer_muster/, при отправке формы появляется ошибка 403. Я не думаю, что это из-за более длинного текста, потому что, если я напишу какой-нибудь более длинный случайный текст, это тоже сработает.

Надеюсь, вы поможете мне с этим.

Ответы [ 7 ]

5 голосов
/ 19 января 2010

Код состояния 403 означает:

10.4.4 403 Запрещено

Сервер понял запрос, но отказывается выполнять это. Авторизация не поможет и просьба не должна повторяться. Если Метод запроса не был HEAD и Сервер хочет обнародовать, почему запрос не был выполнен, это СЛЕДУЕТ описать причину отказ в организации. Если сервер не хочет делать эту информацию доступно клиенту, статус можно использовать код 404 (не найден) вместо этого.

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

Мое странное предположение состоит в том, что на сервере установлено программное обеспечение (возможно, mod_security ), которое отклоняет ввод, поскольку считает, что это попытка выполнить атаку XSS. Вы можете подтвердить (или отклонить) эту гипотезу, временно удалив символы <и> перед вставкой ее в текстовую область.

1 голос
/ 22 мая 2015

Просто добавлю к этому, чтобы сказать, что у меня тоже была эта проблема, и оказалось, что это правило mod_security, ложно-положительное, которое вызвало проблему. Хозяин сайта смог внести домен в белый список против определенного правила. Правило было, по-видимому, 211580 - «COMODO WAF: атака с помощью SQL-инъекций».

1 голос
/ 19 января 2010

Вот решение, которое работает для меня:

Видимо, mod_security не понравилось, что имя текстовой области было "info". После изменения его на «текст» проблем больше не было, и теперь я могу ввести любой текст, какой захочу.

Спасибо за вашу помощь

0 голосов
/ 10 мая 2019
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>

или

1.Use [strip_tags()][2]
2.Use [HTML Purifier][1] (recommended)


http://www.php.net/manual/en/function.strip-tags.php
http://htmlpurifier.org/
0 голосов
/ 24 августа 2015

Я также страдал от этой проблемы, пока не выяснил, что это вызвано сочетанием тегов HTML и слешей в поле <textarea>. Это был также код, который должен был быть вставлен в базу данных.

Я уже использовал mysqli_real_escape_string(), но, похоже, это не имело значения.

0 голосов
/ 29 сентября 2012

Эта проблема возникнет при отправке формы с URL-адресом. публикация URL может быть заблокирована на сервере из соображений безопасности.

0 голосов
/ 04 февраля 2011

Была такая же проблема. Изменение названия текстовой области с «информации» на что-то другое, похоже, сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...