Существует ли более продвинутая версия escapeHTML(небезопасная); с возвратным сообщением?

#javascript #html #node.js

#javascript #HTML #node.js

Вопрос:

Приведенная ниже функция хороша, но она не предотвращает такие, как XSS

НАПРИМЕР: <script>alert(test);</script>

Я хотел бы предотвратить такие «атаки», как эти, но также возвращать сообщение типа:

I tried to exploit this site, but failed! ;

Причина в том, что это для системы чата, которую я создаю.

 function escapeHtml(unsafe) {
    return unsafe
         .replace(/amp;/g, "amp;amp;")
         .replace(/</g, "amp;<")
         .replace(/>/g, "amp;>")
         .replace(/"/g, "amp;quot;")
         .replace(/'/g, "amp;#039;");
 }
  

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

1. Это экранирующая функция. Это отлично предотвращает XSS (можете ли вы показать, как вы используете его там, где его нет?) путем рендеринга любого текста в виде содержимого html. Он делает только это и ничего больше, он не может отличить атаку XSS от содержимого, которое действительно содержит специальные символы. (Ничто не может, кроме, может быть, человека, поскольку нужно выяснить намерения отправителя).

2. @Bergi Я просто хочу предотвратить любые XSS / изменения на моей странице, но если они попытаются, это вернет имя пользователя и сообщение «Я пытался XSS этот сайт» и т.д….

3. Нет, это невозможно. Экранирование всегда не зависит от содержимого, оно позволяет использовать произвольные значения. То, что вы, похоже, ищете, — это различать допустимые и недопустимые значения, например, запрещая именам пользователей содержать какие-либо $<>"' символы. Но это уже не «escapeHTML».

4. @Bergi Нет, я не это имел в виду, когда говорил это; Я имею в виду, например: Джонти сказал: <script>alert(xss);</script> Теперь, когда я это сказал, я бы хотел, чтобы вместо текста, известного как XSS, возвращалось сообщение типа: Джонти сказал: I just tried to XSS this page.

5. И не должно быть ничего плохого в том, что Джонти так говорит. На самом деле, Джонти только что сказал это в комментарии к StackOverflow, и StackOverflow не верит, что он хотел XSS кого-либо с этим.