2017-01-02 2 views
0

내 대괄호는 다음과 같이 URL에 인코딩 결국 내 양식을 제출하면 : http://example.com/myurl?key%5B%5D=something양식은 키 대괄호는 양식 제출에 인코딩 GET

가 나는 이상한 아무것도 볼 수 있는지 확인하기 위해 nginx를 access.log을 확인하고 있습니다를 거기에,하지만 그것은 단지 동일한, 단일 요청을 http://example.com/myurl?key%5B%5D=something (또한 나를 위해 어떤 재작 성을 일으키는 생각하게) 기록됩니다.

그 밖의 원인은 무엇일까요? 전에 이런 일이 생긴 적이 없다고 말할 수는 없습니다.

크롬과 에지 모두에서 동일한 결과를 테스트했습니다.

+0

양식을 게시 할 수 있습니까? –

+0

브라우저가 아마 정상적으로 처리했을 것이며 – Musa

+0

@EdsonHoracioJunior 양식은 특별한 것이 아니며 일반적으로'

xorinzor

답변

1

그 밖의 원인은 무엇입니까?

브라우저. the HTML spec 가입일

: 같이

바이트는 0x7A
의 범위 0x2A, 0x2D, ​​0x2E, 0x30의 아님 0x39로, 0x5A로하는 0x41> 0x5F,이 0x61 인 경우

는 바이트 남기기.

[]U+005B : LEFT SQUARE BRACKETU+005D : RIGHT SQUARE BRACKET, 그래서 그들은 그 범위에 있지 않습니다.

그렇지

  1. S는 해당 바이트의 16 진 값을 나타내는 대문자 ASCII 진수 숫자 뒤에 U + 0025 PERCENT 기호 문자 (%) (제로 패딩으로 구성된 문자열하자 필요하다면).
  2. 문자열 s를 US-ASCII로 인코딩하여 이제는 바이트 문자열이되도록합니다.
  3. s의 바이트로 처리되는 이름이나 값을 해당 순서로 유지하면서 문제의 바이트로 바꿉니다.

그래서 그들은 %5B%5D

+0

이것이 사실이라면 너무 많은 웹 사이트를 망칠 것입니다. – xorinzor

+0

@xorinzor - 왜죠? 많은 웹 사이트가 양식 데이터 인코딩에 대한 공통 표준을 처리 할 수없는 양식 데이터 파싱 라이브러리를 사용할 것으로 기대하십니까? 이 질문에 [tag : php]라는 태그가 지정되었습니다. PHP는'$ _GET'과'$ _POST'를 채우기 위해 데이터를 파싱 할 때 올바르게 디코딩 할 것입니다. – Quentin

+0

GET 입력 배열을 게시 할 때 대괄호를 인코딩하기 전에 크롬에서이 문제가 발생하지 않았습니다. 그리고 지금까지 내가 알아 차린 것은 Symfony가 키를 해독하지 않는다는 것입니다. 그들은 현재대로 취급되고 있습니다. (편집 : 편집 참조) – xorinzor

-1

로 대체 취득 (자신 중 하나를 잘못되고 배제하지 것이다 있었다 결코 나) mykey[]=something 더 이상이 작업을 수행하지 않으려면 방법이 아니다 밝혀졌습니다.

대신 동일한 키 mykey=something&mykey=something을 사용하면 배열로 바뀝니다.

+0

소스? nginx를 통해 PHP 7.0.15에서 작동하지 않습니다. 그렇지 않으면 일반적으로 쿼리 문자열을 처리하는 프로세서이므로 구성/프레임 워크/사용 언어에 따라 달라질 수 있습니다. – jolt