앞에서 크로스 스크립팅에 대한 보안에 대하여 간략히 짚어 보았는데 속성과 메서드 정도만 다시 정리하여보자.
보안 이슈가 발생하는 상황은 그림과 같이 서로 다른 도메인에서 서로간 통신시 발생한다.
![사용자 삽입 이미지](https://t1.daumcdn.net/tistoryfile/fs8/12_36_12_24_blog160007_attach_0_2.jpg?original)
그림 처럼 다른 도메인의 무비가 한 무비를 불러들여 자신에게 포함한다. 포함한 무비 main.swf가 content.swf의 메서드나 속성을 제어하려고 하면 포함당한 무비입장에서는 '과연 자신의 정보를 보여주어야 하느냐?'에 대한 이슈가 발생한다. 만약 달라는대로 다 준다면...보안에 헛점이 많은 프로그램이였을 것이다. 어찌되었건 불려진 무비입장에서는 개발 당시 특정 도메인에 관해서는 자신의 정보를 주어도 좋다는 허락하에 속성이나 메서드등을 제공하게 된다.
개발시 content.swf에 Security.allowDomain("aaa.com");와 같이 aaa.com에 대하여 보안을 허용한다.
[ 속성 ]
exactSettings : Boolean
[static]
카메라 및 마이크 권한, 저장소 할당량 및 영구 공유 객체 저장에 대한 설정을 비롯한 특정 Flash Player 설정에 사용할 도메인을 선택하는 방법을 결정합니다.
sandboxType : String
[static] [read-only]
호출하는 SWF 파일이 작동 중인 보안 샌드박스의 유형을 나타냅니다.
[ 메서드 ]
allowDomain(... domains):void
[static]
지정된 도메인의 SWF 파일과 HTML 파일이 allowDomain() 호출을 포함하는 SWF 파일의 객체 및 변수에 액세스할 수 있도록 합니다. 단 도메인이 IP와 매핑되더라도 IP주소를 넣었을 때 허용되지 않는 경우가 있다. (여러개의 서버를 사용하여 한개의 도메인을 관리할 경우...등) 그때는 아래의 allowInsecureDomain를 사용한다. 가만히 보면 배열이 파라미터의 값이므로 여러개의 사이트를 등록할 수 있다.
allowInsecureDomain(... domains):void
[static]
지정된 도메인의 SWF 파일과 HTML 파일이, 호출하는 SWF 파일(HTTPS 프로토콜을 통해 호스팅되는)의 객체 및 변수에 액세스할 수 있도록 합니다. 이 보안 모드는 보안단계가 조금 취약할 수 있다.
loadPolicyFile(URL:String):void
[static]
url 매개 변수에 지정된 위치에서 크로스 도메인 정책 파일을 로드합니다. XML파일명은 crossdomain.xml로 만들어 줍니다. 과거에는 사이트 루트 폴더에 같이있어야 했지만 지금은 경로를 통해 xml 파일을 읽어 올 수 있다.
Security.loadPolicyFile("http://www.example.com/sub/dir/crossdomain.xml");
* crossdomain 정책
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" to-ports="507" />
<allow-access-from domain="*.foo.com" to-ports="507,516" />
<allow-access-from domain="*.bar.com" to-ports="516-523" />
<allow-access-from domain="www.foo.com" to-ports="507,516-523" />
<allow-access-from domain="www.bar.com" to-ports="*" />
</cross-domain-policy>
showSettings(panel:String = "default"):void
[static]
Flash Player에서 [보안 설정] 다이얼로그 패널을 열어준다.
첫번째 파라미터의 값은 SecurityPanel의 static속성으로 정의 되어있다.
가령 사용자가 로컬에 저장되는 정보를 설정하려 할 때 아래와 같이 코딩한고
Security.showSettings(SecurityPanel.LOCAL_STORAGE);
Security.showSettings(SecurityPanel.MICROPHONE);
[ SecurityPanel의 상수 ]
CAMERA : String = "camera"
[static]
Security.showSettings()에 전달하면 Flash Player 설정에 [카메라] 패널이 표시됩니다.
DEFAULT : String = "default"
[static]
Security.showSettings()에 전달하면 사용자가 Flash Player 설정을 마지막으로 닫을 때 열려 있던 패널이 표시됩니다.
LOCAL_STORAGE : String = "localStorage"
[static]
Security.showSettings()에 전달하면 Flash Player 설정에 [로컬 저장 설정] 패널이 표시됩니다.
MICROPHONE : String = "microphone"
[static]
Security.showSettings()에 전달하면 Flash Player 설정에 [마이크] 패널이 표시됩니다.
PRIVACY : String = "privacy"
[static] Security.showSettings()에 전달하면 Flash Player 설정에 [개인 정보 설정] 패널이 표시됩니다.
SETTINGS_MANAGER : String = "settingsManager"
[static] Security.showSettings()에 전달하면 [설정 관리자]가 별도의 브라우저 윈도우에 표시됩니다.