Adobe ColdFusion 10 開発ガイドのポイントツーポイント通信での WebSocket の使用では、mysocket
によって作成された JavaScript オブジェクトは、 JavaScript から Any CFC の Any パブリック メソッドを文字通り呼び出すことができるメソッドを呼び出すことができます<cfwebsocket>
。invoke()
これはどのようにセキュリティ リスクではありませんか? cfc / 関数は、websocket によって呼び出されないようにどのように保護しますか?
1. CFM ページ index.cfm を作成します。
<script type="text/javascript"> function msgHandler(msgobj){ var txt = document.getElementById("myDiv"); var message = ColdFusion.JSON.encode(msgobj); txt.innerHTML += message + "<br >" + "<br>"; } function invokecfcfn(){ var fname= document.getElementById("fnname").value; if (fname == "f2") { alert("f2 selected"); mysocket.invoke("mycfc", "f2", ["echo"]); } else mysocket.invoke("mycfc", fname); } </script> <cfwebsocket name="mysocket" onmessage="msgHandler"/> <form> <select id="fnname"> <option>f1</option> <option>f2</option> <option>f3</option> </select> <input id="invokefn" name="invokefn" value="Invoke CFC function " type="button" onclick="invokecfcfn();"> <div id="myDiv"> </div> </form>
2. クライアントページから呼び出される関数を含む CFC mycfc.cfc を作成します。
<cfcomponent> <cffunction name="f1" > <cfreturn "Message returned from f1"> </cffunction> <cffunction name="f2" returntype="string" > <cfargument name="arg1" type="string" required="true" > <cfset msg= "Message from wsssendmessage of f2 which you called with arg " & arg1> <cfset wssendMessage(msg)> <cfreturn "Message returned from f2"> </cffunction> <cffunction name="f3" > <cfthread action="run" name="t1" > <cfloop index="i" from="1" to="10"> <cfset sleep(20000)> <cfset wssendMessage("Message #i# from wsssendmessage of f3 #now()#")> </cfloop> </cfthread> <cfreturn "Thread initiated in f3"> </cffunction> </cfcomponent>
編集:関数ではなく、プライベート関数は次を返します:
{
"clientid":39550088,
"ns":"coldfusion.websocket.channels",
"reqType":"invoke",
"code":4001,
"type":"response",
"msg":"The method f1 was not found in component mycfc.cfc."
}
アップデート:
(webroot の外部) に移動しようmycfc.cfc
としましたが、マッピングを追加しましたが、関数は引き続き正常に呼び出すことができます。/com
/com
更新: 2013 年 7 月 3 日
Adobe Product Security Incident Response Team (PSIRT) はこの問題を認識しており、ColdFusion 製品チームと積極的に連携して修正をリリースしています。
http://blogs.coldfusion.com/post.cfm/coldfusion-10-websocket-脆弱性
更新: 2013 年 7 月 9 日
アドビは、Windows、Macintosh、および Linux 用の ColdFusion 10 のセキュリティ ホットフィックスをリリースしました。このホットフィックスは、攻撃者が WebSocket を使用して ColdFusion コンポーネント (CFC) でパブリック メソッドを呼び出すことを可能にする脆弱性 (CVE-2013-3350) に対処します。
http://www.adobe.com/support/security/bulletins/apsb13-19.html