作者rocairforce (拾貳)
看板Ajax
標題[問題] 動態的 function name ??
時間Wed Aug 22 08:51:00 2012
各位版上的神人們您好
我最近遇到個有點棘手的問題,因為一些特殊的需求,我需要把網頁上的東西拆成分開的
元件,例如新聞、最新消息...etc
可是又要求同一頁面可以安插兩個相同的元件,例如同時有兩個新聞的元件,不過這兩個
新聞的資料來源可能是不同的,到這部分都還沒什麼問題,問題是在呈現的部分
第一個新聞元件可能是要用列表的方式,第二個則可能需要是圖文方式,我的做法是
寫一個function先去撈所有元件的資料,再分別對應到呈現資料的function
問題是我的資料撈出來後是json,用迴圈跑時,要怎麼指定到相對應的function
麻煩各位指教,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.117.208.2
1F:→ superpai:棘手在哪裡?@@ 08/22 09:03
2F:→ rocairforce:會先有個function用ajax去撈元件的view,然後再有個 08/22 09:04
3F:→ rocairforce:function去撈所有元件的資料,格式是ajax 08/22 09:04
4F:→ rocairforce:因為每個元件的顯示方式會寫在元件的view那個html檔裡 08/22 09:05
5F:→ rocairforce:所以我想問的是,要怎麼用迴圈動態指定 function name 08/22 09:05
6F:推 s25g5d4:這種行為十分危險 08/22 09:07
7F:→ s25g5d4:很容易被XSS 除非你有配套方案能避免不信任的資料 08/22 09:08
8F:→ rocairforce:不考慮任何攻擊的情況下是可能做到的嗎? 08/22 09:09
9F:推 s25g5d4:如果你取得該function的名稱 可以透過eval實作 08/22 09:10
10F:→ rocairforce:謝謝各位 08/22 09:17
11F:→ s25g5d4:我已經警告過你危險性了 還有效能也會比較差 08/22 09:18
12F:→ s25g5d4:建議你更改整個架構 如果堅持使用eval風險自負 08/22 09:19
13F:→ nenpow:為什麼一定要用eval? 宣告一個functions objects用名字取回 08/22 09:35
14F:→ nenpow:像是 var tmpFunc = funcs['funcA']; 08/22 09:36
15F:→ rocairforce:不知道function會叫什麼 08/22 09:41
17F:推 s25g5d4:我覺得這個也有危險性.. 08/22 09:51
18F:推 Fantasywind:這樣不是只會有兩種view render 不能寫死嗎? 08/22 11:58
19F:→ nenpow:不然就指給window像是window.viewFunc = function(){...}; 08/22 12:24
20F:→ nenpow:var tmpFUnc = window['viewFunc'] 08/22 12:25
21F:→ nenpow:不過既然在不同view 為什麼不能用同一個func name? 08/22 12:25
22F:→ nenpow:會需要動態決定funcname的情境應該是所有view共有同一個js 08/22 12:44
23F:→ nenpow:然後所有functions都寫在那個js裡, 08/22 12:45
24F:→ TonyQ:s25g5d4 你走火入魔了,如果發生 XSS 的話,不是從 JS層去 08/23 12:15
25F:→ TonyQ:影響到的,自訂 function 名稱本身跟"危險"這件事情沒有關聯 08/23 12:15
26F:→ TonyQ:會"危險"的是操作跟資料後面的檢查有沒有確實,有沒有被作 08/23 12:16
27F:→ TonyQ:XSS 的空間。以現在的資訊來講,要判斷是不是危險還很難說。 08/23 12:17
28F:→ s25g5d4:我只是提醒而已...就是因為沒有足夠的資訊 08/23 12:47
29F:→ TonyQ:我是覺得自訂函式名稱這件事情對XSS的安全性沒有任何影響 08/23 22:53
30F:→ TonyQ:然後動態function name 不需要透過 eval 08/23 22:53
31F:→ TonyQ:上面 nenpow 已經說過了 XD 08/23 22:54
32F:→ s25g5d4:恩 我沒想到那裡去..直覺就想到eval orz 08/23 23:03
33F:→ TonyQ:eval 有安全姓問題只限於被eval 的內容含有使用者自己輸入的 08/23 23:12
34F:→ TonyQ:東西,所以這些前提都要講清楚。不然人家來問問題的,莫名被 08/23 23:13
35F:→ TonyQ:嚇跑是有點無辜。XD 08/23 23:13
36F:推 carlcarl:感謝解說 08/24 02:38