* 仕様書

[REFS[
- [1] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#handler-websocket-onmessage>
- [3] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#authors>
- [7] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#user-agents>
- [9] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2016-12-05 14:51:53 +09:00]]) <https://html.spec.whatwg.org/#handler-messageport-onmessage>
- [14] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2016-12-06 07:17:59 +09:00]]) <https://html.spec.whatwg.org/#handler-broadcastchannel-onmessage>
- [12] [CITE@en[Service Workers Nightly]] ([TIME[2017-03-02 15:00:14 +09:00]]) <https://w3c.github.io/ServiceWorker/#service-worker-container-event-handlers>
]REFS]

* WebSocket

[2] [[WebSocket]] に関する [CODE(DOMe)@en[[[message]]]] [[イベント]] [SRC[>>1]]
は、[[WebSocketメッセージを受信]]した時に[[発火]]されます。

* [CODE(DOMm)@en[postMessage]]

[4] [CODE(DOMm)@en[[[postMessage]]]] からの[[メッセージ]]を受信する側の[[著者]]は、
悪意のある[[著者]]がこれを悪用しないよう、細心の注意を払う必要があります [SRC[>>3]]。

[5] [[著者]]は、 [CODE(DOMa)@en[[[origin]]]] [[IDL属性]]の値を検査して、
正当な[[起源]]から受信したメッセージであることを確かめる[['''べきです''']]。
[[著者]]は、期待通りの形式のメッセージであることも検査する[['''べきです''']]。 [SRC[>>3]]

[6] 攻撃者が多数の[[メッセージ]]を送信し、沢山の[[計算]]を要させたり、
大量の[[通信]]を行わせたりするような [[DoS攻撃]]の可能性も考慮する[RUBYB[べき]@en[encouraged]]です。
時間当たりの最大処理量を制限するなど対策を採る[RUBYB[べきかもしれません]@en[encouraged]]。 [SRC[>>3]]

[8] [[利用者エージェント]]も、適当な実装のサイトを [[DoS攻撃]]から守るため、
最大処理量を制限することを検討する[RUBYB[べきかもしれません]@en[encouraged]] [SRC[>>7]]。

* [CODE(DOMi)@en[MessagePort]] インターフェイス、 [CODE(DOMi)@en[ServiceWorkerContainer]] インターフェイス [CODE(DOMa)@en[onmessage]] 属性

[10] [CODE(DOMi)@en[MessagePort]] [[インターフェイス]] [SRC[>>9]] と
[CODE(DOMi)@en[ServiceWorkerContainer]] [[インターフェイス]] [SRC[>>12]] の
[DFN[[CODE(DOMa)@en[onmessage]]]] [[IDL属性]] は、
[CODE(DOMe)@en[message][onmessage]] [[イベント]]の[[イベントハンドラーIDL属性]]です。

[11] [F[設定器]]には通常の動作に加えて特別な動作が規定されています。

;; [[イベントハンドラー]]参照。

* [CODE(DOMi)@en[BroadcastChannel]] インターフェイス [CODE(DOMa)@en[onmessage]] 属性

[15] [CODE(DOMi)@en[BroadcastChannel]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[onmessage]]]] [[IDL属性]]は、
[CODE(DOMe)@en[message][onmessage]] [[イベント]]の[[イベントハンドラーIDL属性]]です
[SRC[>>14]]。

[16] [CODE(DOMi)@en[MessagePort]] とは違って、こちらの [[IDL属性]]に特殊な動作はありません。
ただし [CODE(DOMe)@en[message][onmessage]] [[イベントリスナー]]の登録と削除に特殊な動作が規定されています。

;; [CODE(DOMi)@en[BroadcastChannel]]、[[イベントリスナー]]参照。
