[問題] 動態的 function name ??

看板Ajax作者 (拾貳)時間11年前 (2012/08/22 08:51), 編輯推噓5(5031)
留言36則, 7人參與, 最新討論串1/2 (看更多)
各位版上的神人們您好 我最近遇到個有點棘手的問題,因為一些特殊的需求,我需要把網頁上的東西拆成分開的 元件,例如新聞、最新消息...etc 可是又要求同一頁面可以安插兩個相同的元件,例如同時有兩個新聞的元件,不過這兩個 新聞的資料來源可能是不同的,到這部分都還沒什麼問題,問題是在呈現的部分 第一個新聞元件可能是要用列表的方式,第二個則可能需要是圖文方式,我的做法是 寫一個function先去撈所有元件的資料,再分別對應到呈現資料的function 問題是我的資料撈出來後是json,用迴圈跑時,要怎麼指定到相對應的function 麻煩各位指教,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.208.2

08/22 09:03, , 1F
棘手在哪裡?@@
08/22 09:03, 1F

08/22 09:04, , 2F
會先有個function用ajax去撈元件的view,然後再有個
08/22 09:04, 2F

08/22 09:04, , 3F
function去撈所有元件的資料,格式是ajax
08/22 09:04, 3F

08/22 09:05, , 4F
因為每個元件的顯示方式會寫在元件的view那個html檔裡
08/22 09:05, 4F

08/22 09:05, , 5F
所以我想問的是,要怎麼用迴圈動態指定 function name
08/22 09:05, 5F

08/22 09:07, , 6F
這種行為十分危險
08/22 09:07, 6F

08/22 09:08, , 7F
很容易被XSS 除非你有配套方案能避免不信任的資料
08/22 09:08, 7F

08/22 09:09, , 8F
不考慮任何攻擊的情況下是可能做到的嗎?
08/22 09:09, 8F

08/22 09:10, , 9F
如果你取得該function的名稱 可以透過eval實作
08/22 09:10, 9F

08/22 09:17, , 10F
謝謝各位
08/22 09:17, 10F

08/22 09:18, , 11F
我已經警告過你危險性了 還有效能也會比較差
08/22 09:18, 11F

08/22 09:19, , 12F
建議你更改整個架構 如果堅持使用eval風險自負
08/22 09:19, 12F

08/22 09:35, , 13F
為什麼一定要用eval? 宣告一個functions objects用名字取回
08/22 09:35, 13F

08/22 09:36, , 14F
像是 var tmpFunc = funcs['funcA'];
08/22 09:36, 14F

08/22 09:41, , 15F
不知道function會叫什麼
08/22 09:41, 15F

08/22 09:43, , 16F
'funcA'可以動態指定,像是http://jsfiddle.net/Qzgs4/1/
08/22 09:43, 16F

08/22 09:51, , 17F
我覺得這個也有危險性..
08/22 09:51, 17F

08/22 11:58, , 18F
這樣不是只會有兩種view render 不能寫死嗎?
08/22 11:58, 18F

08/22 12:24, , 19F
不然就指給window像是window.viewFunc = function(){...};
08/22 12:24, 19F

08/22 12:25, , 20F
var tmpFUnc = window['viewFunc']
08/22 12:25, 20F

08/22 12:25, , 21F
不過既然在不同view 為什麼不能用同一個func name?
08/22 12:25, 21F

08/22 12:44, , 22F
會需要動態決定funcname的情境應該是所有view共有同一個js
08/22 12:44, 22F

08/22 12:45, , 23F
然後所有functions都寫在那個js裡,
08/22 12:45, 23F

08/23 12:15, , 24F
s25g5d4 你走火入魔了,如果發生 XSS 的話,不是從 JS層去
08/23 12:15, 24F

08/23 12:15, , 25F
影響到的,自訂 function 名稱本身跟"危險"這件事情沒有關聯
08/23 12:15, 25F

08/23 12:16, , 26F
會"危險"的是操作跟資料後面的檢查有沒有確實,有沒有被作
08/23 12:16, 26F

08/23 12:17, , 27F
XSS 的空間。以現在的資訊來講,要判斷是不是危險還很難說。
08/23 12:17, 27F

08/23 12:47, , 28F
我只是提醒而已...就是因為沒有足夠的資訊
08/23 12:47, 28F

08/23 22:53, , 29F
我是覺得自訂函式名稱這件事情對XSS的安全性沒有任何影響
08/23 22:53, 29F

08/23 22:53, , 30F
然後動態function name 不需要透過 eval
08/23 22:53, 30F

08/23 22:54, , 31F
上面 nenpow 已經說過了 XD
08/23 22:54, 31F

08/23 23:03, , 32F
恩 我沒想到那裡去..直覺就想到eval orz
08/23 23:03, 32F

08/23 23:12, , 33F
eval 有安全姓問題只限於被eval 的內容含有使用者自己輸入的
08/23 23:12, 33F

08/23 23:13, , 34F
東西,所以這些前提都要講清楚。不然人家來問問題的,莫名被
08/23 23:13, 34F

08/23 23:13, , 35F
嚇跑是有點無辜。XD
08/23 23:13, 35F

08/24 02:38, , 36F
感謝解說
08/24 02:38, 36F
文章代碼(AID): #1GD2ptxv (Ajax)
文章代碼(AID): #1GD2ptxv (Ajax)