В Mobile Textarea применяется XSS Filter
У меня есть простая HTML-форма для мобильных устройств, и в TextArea пользователь может вводить любые данные.
Мне нужно создать функцию, которая может применять XSS-фильтр, не передавая какие-либо HTML или недействительные данные XSS на сервер.
В настоящее время я использую XSS Escape, рекомендованный Owasp, например:
var data = document.getElementById(__fieldname__).innerHTML;
data = data.replace(/\<(.*?)DOCTYPE(.*?)\>/ig, '')
.replace(/\<html(.*?)\>/ig, '')
.replace(/\<\/html(.*?)\>/ig, '')
.replace(/\<script(.*?)\>/ig, '')
.replace(/\<\/script(.*?)\>/ig, '')
.replace(/\<style(.*?)\>/ig, '')
.replace(/\<\/style(.*?)\>/ig, '')
.replace(/\<body(.*?)\>/ig, '')
.replace(/\<\/body(.*?)\>/ig, '')
.replace(/\<form(.*?)\>/ig, '')
.replace(/\<\/form(.*?)\>/ig, '')
.replace(/\<iframe(.*?)\>/ig, '')
.replace(/\<\/iframe(.*?)\>/ig, '')
.replace(/\&/g, '&')
.replace(/\</g, '<')
.replace(/\>/g, '>')
.replace(/\"/g, '"')
.replace(/\'/g, ''')
.replace(/\//g, '/');
use data...
какие-либо предложения или улучшения?
1 ответ
Вы проверяете данные, используя javascript, который в основном проверяет данные на стороне клиента, и есть некоторые случаи, когда пользователь блокирует javascript, тогда пользователь может легко обойти это, поэтому лучшим вариантом для этого вида проверки является также использование проверки на стороне сервера.