Запретить ввод для отправки html-кода / скрипта

#javascript #jquery #html #input

#javascript #jquery #HTML #ввод

Вопрос:

Я создаю каталог, в котором пользователи могут публиковать статьи. Чтобы получить значения для публикации, я использую входные html-элементы и использую $.post для сохранения данных в базе данных.

Однако у меня есть проблема, заключающаяся в том, что если пользователь пишет некоторый HTML-код в статье, он сохраняется при форматировании кода.

например, если введенное значение равно:

 <input type="text" value="this is an article title <script>$("body").remove();</script>">
  

когда сообщение будет отправлено, страница также загрузит скрипт js, удаляющий body .

Как этого избежать и сообщить, что в поле ввода есть скрипт, или форматирование скрипта для отображения в виде текста?

Комментарии:

1. Вам необходимо очистить пользовательский ввод на сервере — JS / jQuery не является подходящим инструментом для этой работы, поскольку его слишком легко обойти.

2. Я должен сделать это на моем php get?

3. Проверьте htmlspecialchars() .

4. большое спасибо, это работает —— $title = htmlspecialchars(filter_input(INPUT_GET, "title"), ENT_QUOTES);

Ответ №1:

 <?php

//Simple answer
#when you echo data results from the database. consider code below..
#Assuming you are at the last process of echoling the data out.
$data='THIS WOULD BE YOUR DATA OBJECT OR VARIABLE CONTAINING DATA FROM THE DATABASE';


#then...
$data=htmlentities($data);
#or
$data=strip_tags($data);
#or
$data=htmlspecialchars($data);


#just be assured that tags or code will not be executed by the browser once above is included!
echo $data;
  

Комментарии:

1. Спасибо, но когда я возвращаю данные, я возвращаю их как json

2. затем json кодирует ваши данные. like ==> $data=json_encode(htmlspecialchars($data));