2017-01-02 35 views
0

時に符号化された鍵の角括弧はGET: http://example.com/myurl?key%5B%5D=somethingフォームは、フォーム送信

を私は奇妙な何かを見ることができるかどうかを確認するためにnginxのaccess.logをチェックしていますそこにはhttp://example.com/myurl?key%5B%5D=somethingのために記録されているものと同じ、単一の要求だけです(これにより、書き換えがこれを引き起こしているとは思われません)。

これ以外に何が起こる可能性がありますか?私は以前これが起こったとは言えません。

クロムとエッジの両方でこれをテストしましたが、どちらも同じ結果です。

+0

フォームを投稿できますか? –

+0

ブラウザはおそらくそれを行いました。通常は – Musa

+0

@EdsonHoracioJuniorフォームは特別なものではありません。通常の '

xorinzor

答えて

1

これ以外に何が起こる可能性がありますか?

ブラウザ。 the HTML specから

バイトは0x5Aの範囲0x2A、0x2D、0x2E、ます。0x39を0x30から、0×41である場合には、> 0x5F、の0x61 0x7Aの
があるとしてバイトを残します。

[]U+005B : LEFT SQUARE BRACKETU+005D : RIGHT SQUARE BRACKETなので、その範囲ではありません。

そうでない場合

  1. sが問題のバイトの16進数の 値を表す大文字のASCII進数字が続くU + 0025パーセント記号文字(%)(ゼロパディングで構成される文字列とします必要であれば)。
  2. 文字列sをUS-ASCIIとしてエンコードして、バイト文字列にします。
  3. sのバイトで処理されている名前または値に、相対的な順序を維持して、問題のバイトを置き換えます。

そこで彼らは%5B%5D

+0

これが本当であれば、非常に多くのウェブサイトを破壊するでしょう。 – xorinzor

+0

@xorinzor - なぜですか?多くのWebサイトが、フォームデータをコード化するための共通の標準を処理できないフォームデータ解析ライブラリを使用することを期待していますか?あなたはこの質問[tag:php]というタグを付けました。 PHPは、 '$ _GET'と' $ _POST'を設定するためにデータを解析するときにPHPを正しくデコードします。 – Quentin

+0

GET入力の配列をポストすると、角カッコがエンコードされる前に、私はこの問題をChromeで経験したことがありません。これまでにSymfonyが鍵を解読していないことに気付いています。彼らはそのまま扱われている。 – xorinzor

-1

に置き換えますmykey[]=somethingはもうこれを行う方法ではありませんが判明していない(あるいはんでした、どちらか自分が間違っている除外しません)。

代わりに同じキーmykey=something&mykey=somethingを使用すると、配列に変換されます。

+0

ソース? PHP 7.0.15ではnginx上で動作しません。それ以外の場合は、使用されている構成/フレームワーク/言語に依存している可能性があります。通常は、クエリ文字列を処理するプロセッサです。 – jolt