- Four Types: remote, local-with-filesystem, local-with-networking, and local-trusted
- 一個swf的sandbox type是會變動的。首先Flash Player會先檢查該swf是從remote端或local端被存取。
- 若該swf是從remote端(相對存取它的swf而言),該swf的sandbox就會被assigned to remote(Developer無權變更)。反之,該swf在local端被載入存取,那它的sandbox就有可能被assigned to 另外三種之一。
- 當B是在local端,那他的sandbox就由它被編譯時的compiler setting, configuration files, installers, or instructions所決定。(換句話說,Developer可決定swf在local端被載入存取時的Sandbox)
- 下列幾種Operation必須考慮到Security Sandbox: 1. Loading Content, 2. Accessing Content as Data, 3. Cross Scripting, 4. Loading Data
- 假設A.swf operate B.swf。必須同時考慮A和B的Sandbox,以及operation type是上面哪一種。所以可能有4 * 4 * 4個組合。(不過其實有幾個組合是不可能發生的) 這些組合請參考p.419 ~ p.421
- local-with-filesystem, 顧名思義就是被拿掉網路存取權限,所以若A.swf是local-with-filesystem sandbox, 它通常同樣僅能存取local-with-filesystem sandbox的swf。以防A將其讀取到的local resource藉由跳板B上傳到網路上。
- local-with-networking,正好相反,它擁有網路存取權限,但沒有存取local端的權限,所以若A.swf是local-with-networking, 它同樣也僅能存取local-with-networking sandbox的swf。以防A藉由B先讀取local resource,再自己上傳至網路上。
- local-with-trusted,可以指定某些目錄下的swf可以合法載入自己。參p.428。
- Flex Builder會讓Project目錄下的output folder自動擁有local-with-trusted sandbox type,所以在output folder中剛被編譯好的swf,可以無限制的存取其它swf (有光環)。
- 但當該swf被搬出output folder而移到桌面上或其它目錄, 它的sandbox type 就可能會是local-with-filesystem或local-with-networking (由developer透過compiler setting指令 "-use-network"設置。)
- Default Local Security-Sandbox-Type: 上述的compiler setting 在不同環境下的default value亦不同。Flex Builder的compiler的default value是-use-network=true。而Flash Authoring Tool下的default value是在Republish Setting>Flash tab>Local playback security挑選,其預設值是"Access local files only"。
- 換句話說,當Flex Builder編譯的swf被搬到output folder之外的路徑時,若沒有額外設置"-use-network"compiler setting,它就是local-with-network sandbox type。而Flash Authoring Tool編譯出來的swf,預設是local-with-filesystem sandbox type。
- 原先A.swf (compiled by FlexBuilder)可以存取B.swf(compiled by Flash Authoring Tool),是因為output folder的光環籠罩A.swf。一旦output folder整個目錄複製到桌面上,A.swf失去光環,其預設為local-with-network sandbox type, 而B.swf其預設是local-with-filesystem sandbox type。所以A.swf便不能存取B.swf。
- 若要讓A.swf仍然可以在本地端存取B.swf,就必須將A.swf改成local-with-filesystem或將B.swf改成local-with-networking。
2010年8月12日 星期四
Security Sandbox
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言