3

追加レベルのセキュリティとして、jsonへの解析不可能なcurftアプローチの使用を検討しています。

while(1);アプローチを見て、私はグーグルとフェイスブックに出くわしましたfor(;;); そして別の言及{}&&

を取り巻くコメントを見たwhile(1);ことがありますが、1は数値であると混乱する可能性があるため、私のアプローチはになりますfor(;;);

次に、に出くわしました{}&&。これにより、jsonは無効になりますが、解析/評価は可能です。参考のためにこの記事を参照してください:http ://www.sitepen.com/blog/2008/09/25/security-in-ajax/

あなたのアプローチは何ですか?そして、解析不可能なcurftを使用してajax呼び出しを行うための関数はどのように見えますか?

4

1 に答える 1

2

私はいつもルートオブジェクトを使用します。述べたように:

配列であるルートを使用してJSONデータをハイジャックすることのみが可能です。ルートがプリミティブの場合、プリミティブ値はコンストラクターをトリガーしません。ルートがオブジェクトの場合、それは有効なJavaScript構文ではないため、解析できません。

ルートプリミティブ(たとえば、応答がちょうど5)を持つことは有効なJSONではないことに注意してください。RFCのセクション2には、次のように書かれています。

JSONテキストは、シリアル化されたオブジェクトまたは配列です。

  JSON-text = object / array

私(および多くのサイト)は通常、封筒形式を使用しているため、これはそれほど大きな負担にはなりません。例えば:

{
  "header": {...},
  "data": {...}
}

また:

{
  "status": {...},
  "data": {...}
}

その場合、任意の配列がデータの値になるため、ハイジャックのリスクなしに構文的に有効なJSONを提供できます。

于 2012-04-25T23:19:23.693 に答える