ジェイソン違い、JSONPとJSONについて

 

ajax(つまりはXMLHttpRequest)って便利ですよね。

異なるドメインにアクセスはできない=クロスドメイン制約

を除いては・・・・。

 

しかし、JSONPを使うと、なぜ異なるドメインのデータを取得できるのでしょうか?

そんな疑問からのJSONとJSONPの違いを調べました。

参考:ここ

 

JSON        =    JavaScript  Object Notation

JSONP     =    JSON with Padding (Padding=不要なもん)

→つまりJSONPはJSONではない!!!

 

JSONPの仕組み

<script src=”https://google.com/test.js”></script>

//変数data に “グーグルからのメッセージ”;が挿入されるとする。

<script>

alert(data);  //「グーグルからのメッセージ」がアラートされる。

</script>

 

 

スタイルシートやjQueryライブラリーを呼ぶのもクロスドメインじゃん!そうじゃん!と気付いた次第です。

クロスドメイン制約って簡単に回避できるやーんって、楽勝って感じですよね!

 

しかし

 

これって、データ取得先(上記例で言うとgoogle.com)に

自サイトでの実行権を与えっちゃってるんです!

もしも、dataと言う変数に無限アラートが仕込まれてたらどうしょうか?自分は何も実装していないのに、観覧者に不快な思いをさせてしまう可能性があるのです。

 

こういったXXS攻撃を避けるために、

1.JSON.parse()をしましょう!

JSON.parse()

※JSON,JSONPはオブジェクトのためJSON.stringfy()で文字列にしたのち、JSON.parseしましょうね!

 

2.JSONP使うのやめましょう!

じゃあ何使えばいいんや!教えてください。

 

投稿者:

kin29man

農学部卒の7年目エンジニアです👩‍💻 PHPとGASが好きです!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です