액세스 가능성

목차

Flash 8에서 ExternalInterface 사용하기

Flash 8 플래이어에 변경된 보안 사항

플래시 플래이어 8 에서는 플래이어 7 버전과 다른 다음과 같은 제한 사항이 있습니다.

  • 로컬 샌드박스

    기본적으로 로컬 SWF는 더 이상 인터넷에 연결하거나, HTTP 통신을 수행하거나 로컬 HTML 파일과 통신할 수 없습니다. SWF 7 이전 버전에서 이와 같은 작업을 수행하려고 시도하면 경고 대화 상자에 해당 작업을 수행할 수 없다는 메시지가 표시됩니다. 이 대화 상자의 모양이나 기존 내용에서 깨진 부분은 최종 사용자나 Flash 개발자가 알맞은 권한을 부여해서 수정할 수 있습니다.

  • 로드 제한 사항

    이제 로컬이 아닌 URL의 SWF 및 HTML 내용에서 로컬 경로의 내용(SWF, HTML, PNG 등)을 로드할 수 없습니다.

  • 타사 저장소

    이제 Flash Player 사용자는 타사 SWF(브라우저의 주소 표시줄에 표시된 도메인과 다른 도메인의 SWF)에서 영구 공유 객체를 읽거나 쓰지 못하도록 선택할 수 있습니다. 이 제한 사항은 기본적으로 적용되지 않으므로 사용자가 적용 여부를 미리 결정해야 합니다.

  • allowScriptAccess 기본값

    SWF 8 이상 버전에서 HTML allowScriptAccess 매개 변수의 기본값은 "always"가 아니라 "sameDomain"입니다. 이것은 SWF 7 이전 버전에는 적용되지 않습니다. allowScriptAccess 매개 변수는 SWF에서 HTML 페이지의 JavaScript를 호출할지 여부를 제어합니다.

위의 4가지 제한 사항 중 Flash – Javascript 의 통신과 관련해서는 allowScriptAccess 부분이 밀접한관계가 있습니다.

allowScriptAccess 의 세팅은 다음과 같습니다.

  • allowScriptAccess가 "never"이면 아웃바운드 스크립팅은 항상 실패합니다.
  • allowScriptAccess가 "always"이면 아웃바운드 스크립팅은 항상 성공합니다.
  • allowScriptAccess가 "sameDomain"(버전 8부터 SWF 파일에서 지원)인 경우 SWF 파일이 호스팅하는 웹 페이지와 같은 도메인에 있으면 아웃바운드 스크립팅이 허용됩니다.
  • HTML 페이지에 allowScriptAccess가 지정되어 있지 않으면 기본값은 버전 8 SWF 파일의 경우 "sameDomain"이고 그 이전 버전의 SWF 파일의 경우 "always"입니다.

따라서 웹에서는 같은 도메인의 경우만 Javascript 함수가 호출 되고 다른 도메인과 로컬에서 테스트 할 시에는 allowScriptAccess = "always" 로 변경을 해 주셔야 합니다.

Flash 에서 HTML 을 Publish 하면 다음과 같은 코드가 생성이 됩니다.

          

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>allowScriptAccess</title>
</head>
<body bgcolor="#ffffff">
<!--url's used in the movie-->
<!--text used in the movie-->
<!-- saved from url=(0013)about:internet -->
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" id="allowScriptAccess" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="allowScriptAccess.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" /><embed src="allowScriptAccess.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="allowScriptAccess" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>

위의 코드 중 하이라이트한 코드인 allowScriptAccess="sameDomain" 를 allowScriptAccess = "always" 로 변경을 해 주셔야 합니다.