我想通過JSONP提供一個web服務,並想知道,如果我需要清理回調參數的值。我是否需要清理JSONP調用中的回調參數?
我目前的服務器端腳本看起來像這樣目前(或多或少代碼是在PHP,但可以是任何東西真的。):
header("Content-type: application/json; charset=utf-8");
echo $_GET['callback'] . '(' . json_encode($data) . ')';
這是一個經典的XSS-漏洞。
如果我需要清潔它,那麼如何?我無法找到有關可能允許回調字符串的足夠信息。我從Wikipedia引述如下:
儘管填充(前綴)典型地是在瀏覽器的執行上下文中定義的回調函數的名稱,它也可以是一個變量賦值,if語句,或者任何其他Javascript語句前綴。
看起來不錯。我會試試這個。 – 2010-05-07 13:33:42
如果您使用的是英語語言環境,則可以使用ctype_alpha($ _ GET ['callback'])輕鬆檢查此情況,否則過濾器函數可以很好地工作。另請注意,標題應設置爲'content-type:application/json; charset = utf-8'時返回一個jsonp響應。 – Josh 2011-01-23 23:07:57
固定。並感謝您的信息。 – 2011-01-25 09:01:52