2015-02-13 1 views
0

У меня проблема с сценарием на разных сайтах (сообщено одним из инструментов) У меня есть форма на моем экране с различными полями. Теперь, если пользователь вводит <script>alert("1")</script> тег для одного поля 1, браузер показывает всплывающее окно со значением 1.Исправить проблему с перекрестным сценарием

Если пользователь вводит <html>testString</html> or <script>alert("1")</script> на поле 1, оно рассылается как кодируются на сервер и извлекать обратно, как кодируются правильно, но если пользователь не изменяет поле 1, содержащее эти теги, но обновляет другие поля, такие как поле 2, 3, поле 1 перепутано, поскольку оно отправляется на сервер, не закодированный.

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

Также я использую ресурс Java, на котором размещены значения формы? Итак, любые изменения в том же самом?

ответ

1

Для этого вы должны заменить символы типа «<» на соответствующий ему эквивалент объекта html, такой как «& lt». Лучше сделать это на стороне сервера, так как проверка на стороне клиента может быть заблокирована пользователем. В javascript мы можем сделать это.

document.write(htmlentities("<script>")); 

function htmlentities(str) { 
    var ret = str.replace(/[\u00A0-\u9999<>\&]/gim, function(i) { 
     return '&#'+i.charCodeAt(0)+';'; 
    }); 
    return ret; 
} 
+0

Thx ... и как я могу расшифровать его на уровне Java ресурсов (так как я буду посылать введенные пользователем значения в базу данных, наконец) – testndtv

+0

@testndtv http://jsfiddle.net/aZxjG/ –