Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача специальных символов в hidden
 
 автор: BlueWolf   (04.09.2013 в 19:21)   письмо автору
 
 

Как передать текст в hidden если в ней содержаться специальные символы
',",<,>


Пример

if (isset($_POST['news'])) {$news=$_POST['news'];} else{$news = "";} //принимаем news

echo'<form action="" method="POST">
<input type="submit" name="enter"  value="Опубликовать статью" />
<input name="addpost_news" type="hidden" value="'.$news.'">
</form>';


echo'<form action="" method="POST">
<textarea name="news" rows="18">'.$news.'</textarea><br/>
<input type="submit"  value="Редактировать" /> <br/>
<br/>
</form>';


Если передаю текст например

<a href="">Ссылка</a> Вылезла


То вылезает текст после кнопки "Опубликовать статью
Ссылка Вылезла">

  Ответить  
 
 автор: confirm   (04.09.2013 в 19:26)   письмо автору
 
   для: BlueWolf   (04.09.2013 в 19:21)
 

htmlspecialchars($news)

  Ответить  
 
 автор: BlueWolf   (04.09.2013 в 20:33)   письмо автору
 
   для: confirm   (04.09.2013 в 19:26)
 

Если сделать так это будет правильным решением?

if (isset($_POST['news'])) {$news=htmlspecialchars($_POST['news']);} else{$news = "";} 

  Ответить  
 
 автор: confirm   (04.09.2013 в 20:57)   письмо автору
 
   для: BlueWolf   (04.09.2013 в 20:33)
 

Все что вы принимаете от пользователя необходимо пропускать через эту функцию (при выводе в браузер), иначе последствия могут быть куда плачевнее нежели "корявость" html-кода. Но переменные лучше вот так обрабатывать:
<?
$news 
= isset($_POST['news']) ? htmlspecialchars($_POST['news']) : '';


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

  Ответить  
 
 автор: Jovidon   (05.09.2013 в 11:14)   письмо автору
 
   для: confirm   (04.09.2013 в 20:57)
 

ENT_QUOTES добавить не лучще будеть?
то что вы говорите, с вами не спорю!
Но эту статью я проверил http://blog.astrumfutura.com/page/2/?s=xss
Что вы говорите по поводу этого?

  Ответить  
 
 автор: confirm   (05.09.2013 в 11:29)   письмо автору
 
   для: Jovidon   (05.09.2013 в 11:14)
 

Чтобы что-то добавлять, даже сперва не добавлять, а применять, нужно не просто выслушать здесь мнение и использовать пример показанный, нужно понимать что это, и почему это нужно.
Ссылку на данную функцию я ему дал, а уж соизволит он ознакомится с материалом, это уже не моя забота. А безопасность, это куда гораздо более широкий диапазон, чем htmlspecialchars с ее аргументами, чтобы возможно было изложить все в рамках одной темы. Этот вопрос нужно изучать самостоятельно, и обсуждать конкретные моменты.

  Ответить  
 
 автор: BlueWolf   (05.10.2013 в 22:41)   письмо автору
 
   для: BlueWolf   (04.09.2013 в 19:21)
 

Что делать если htmlspecialchars повторяется несколько раз?
То есть я в начале $news пропускаю через htmlspecialchars, а потом засовываю его в hidden.
Но мне снова приходится его принимать через POST и пропускать через htmlspecialchars. И так несколько раз.
На денвере у меня работает без "косяков", а на хостинге появляется куча слешей.

  Ответить  
 
 автор: confirm   (05.10.2013 в 22:52)   письмо автору
 
   для: BlueWolf   (05.10.2013 в 22:41)
 

htmlspecialchars слешей не добавляет, она преобразовывает такие символы как <, > и др. в html-мнемоники. А слеши у вас от путаници с магическими кавычками, видимо они у вас включены, и вы еще сами их экранируете вдобавок.

  Ответить  
 
 автор: BlueWolf   (06.10.2013 в 15:33)   письмо автору
 
   для: confirm   (05.10.2013 в 22:52)
 

Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования