| 함수 | 다음에 의해 정의됨 | ||
|---|---|---|---|
registerClassAlias() 메서드에 대한 호출을 통해 앨리어스를 등록한 적이 있는 클래스를 찾습니다. | flash.net | ||
Flash Player 컨테이너가 포함된 응용 프로그램(대개 브라우저)의 윈도우를 열거나 교체합니다. | flash.net | ||
객체가 AMF(Action Message Format)로 인코딩될 때 객체의 클래스(유형)를 유지합니다. | flash.net | ||
서버로 URL 요청을 보내지만 응답은 무시합니다. | flash.net | ||
| getClassByAlias | () | 함수 |
public function getClassByAlias(aliasName:String):Class| 언어 버전: | ActionScript 3.0 |
| 런타임 버전: | AIR 1.0 Flash Player 9 |
registerClassAlias() 메서드에 대한 호출을 통해 앨리어스를 등록한 적이 있는 클래스를 찾습니다.
이 메서드는 flash.utils.getDefinitionByName() 메서드와 상호 작용하지 않습니다.
매개 변수
aliasName:String — 찾은 앨리어스입니다. |
Class — 지정된 앨리어스와 연관된 클래스입니다. 찾지 못하면 예외가 발생합니다. |
ReferenceError — 앨리어스가 등록되어 있지 않습니다. |
참고 사항
| navigateToURL | () | 함수 |
public function navigateToURL(request:URLRequest, window:String = null):void| 언어 버전: | ActionScript 3.0 |
| 런타임 버전: | AIR 1.0 Flash Player 9 |
Flash Player 컨테이너가 포함된 응용 프로그램(대개 브라우저)의 윈도우를 열거나 교체합니다. Adobe AIR에서 함수는 기본 시스템 웹 브라우저에서 URL을 엽니다.
중요 보안 참고 사항
개발자들은 종종 FlashVars와 같은 외부 소스에서 얻은 URL 값을 navigateToURL() 함수로 전달합니다. 공격자들은 이러한 외부 소스를 조작하여 크로스 사이트 스크립팅과 같은 공격을 시도하려고 합니다. 따라서 개발자들은 이 함수로 전달하기 전에 모든 URL의 유효성을 확인해야 합니다.
URL 데이터의 유효성을 검사하는 방법은 전체 응용 프로그램에서 사용된 URL에 따라 달라질 수 있습니다. 가장 일반적인 데이터 유효성 검사 방법은 URL이 응용 프로그램 스킴에 속하는지 확인하는 것입니다. 예를 들어 실수로 javascript: URL을 허용하게 되면 크로스 사이트 스크립팅이 발생하게 됩니다. 도메인에 있는 URL만 사용하면 피싱 공격자들이 SWF 파일을 개방형 리디렉터로 사용할 수 없게 됩니다. 보안 기능을 강화하려면 URL 경로를 확인하고 URL이 RFC 지침을 따르도록 해야 합니다.
예를 들어 다음 코드는 http:// 또는 https://로 시작하지 않는 URL을 거부하고 URL이 해당 도메인 이름 내에 있는지 확인함으로써 데이터 유효성을 검사하는 간단한 예를 보여 줍니다. 일부 웹 응용 프로그램에서는 이 예가 적용되지 않을 수 있으므로 URL에 대한 추가 검사가 필요할 수 있습니다.
// AS3 Regular expression pattern match for URLs that start with http:// and https:// plus your domain name.
function checkProtocol (flashVarURL:String):Boolean {
// Get the domain name for the SWF if it is not known at compile time.
// If the domain is known at compile time, then the following two lines can be replaced with a hard coded string.
var my_lc:LocalConnection = new LocalConnection();
var domainName:String = my_lc.domain;
// Build the RegEx to test the URL.
// This RegEx assumes that there is at least one "/" after the
// domain. http://www.mysite.com will not match.
var pattern:RegExp = new RegExp("^http[s]?\:\\/\\/([^\\/]+)\\/");
var result:Object = pattern.exec(flashVarURL);
if (result == null || result[1] != domainName || flashVarURL.length >= 4096) {
return (false);
}
return (true);
}
브라우저에서 실행 중인 로컬 내용의 경우 첫 번째 매개 변수로 전달된 URLRequest 객체를 통해 "javascript:" 의사 프로토콜을 지정하는 navigateToURL() 메서드 호출은 SWF 파일 및 포함하는 웹 페이지(있는 경우)가 local-trusted 보안 샌드박스에 있는 경우에만 허용됩니다. 일부 브라우저에서는 navigateToURL() 메서드에 JavaScript 프로토콜을 사용할 수 없습니다. 대신 ExternalInterface API의 call() 메서드를 사용하여 포함하는 HTML 페이지 내에서 JavaScript 메서드를 호출할 수 있습니다.
Adobe AIR의 비 응용 프로그램 샌드박스 및 Flash Player에서는 일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 ActionScript 3.0 프로그래밍 설명서의 보안 장에서 "네트워킹 API 제한"을 참조하십시오.
브라우저에서 실행되는 Flash Player 10 이상에서는 프로그래밍 방식으로 이 메서드를 사용하여 팝업 윈도우를 열지 못할 수도 있습니다. 브라우저 및 브라우저 구성에 따라 팝업 윈도우가 차단될 수 있으므로 팝업 윈도우가 나타나는 것을 보장할 수 없습니다. 하지만 마우스 클릭이나 키 누르기 이벤트에 대한 이벤트 핸들러 등 사용자 액션의 직접적인 결과로 실행되는 코드에서 이 메서드를 사용하여 팝업 윈도우를 열도록 하면 팝업 윈도우가 나타날 가능성이 높아집니다.
Flash Player 10 이상에서는 multipart Content-Type(예: "multipart/form-data")을 사용하고 POST 본문 내 "content-disposition" 헤더에 "filename" 매개 변수를 지정하여 업로드를 처리하는 경우 POST 작업이 업로드에 적용되는 보안 규칙의 영향을 받을 수 있습니다.
또한 multipart Content-Type의 경우 구문이 RFC2046 표준에 따라 유효해야 합니다. 구문이 유효하지 않은 경우 POST 작업은 업로드에 적용되는 보안 규칙의 영향을 받을 수 있습니다.
보안과 관련된 자세한 내용은 다음을 참조하십시오.
매개 변수
request:URLRequest —
이동할 URL을 지정하는 URLRequest 객체입니다.
현재 Adobe AIR에서 실행 중인 내용의 경우 navigateToURL() | |
window:String (default = null) —
request 매개 변수에 의해 지정된 문서를 표시할 브라우저 창 또는 HTML 프레임입니다. 특정 윈도우의 이름을 입력하거나 다음 값 중 하나를 사용할 수 있습니다.
이 매개 변수 값을 지정하지 않으면 빈 윈도우가 새로 만들어집니다. 독립형 플레이어의 경우 새 윈도우(
참고: local-with-filesystem 샌드박스에서 실행 중인 SWF 파일의 코드가 |
IOError —
request 객체의 digest 속성이 null이 아닙니다. SWZ 파일(Adobe 플랫폼 구성 요소)을 로드할 때는 URLRequest 객체가 URLLoader.load() 메서드 호출에 사용되는 경우에만 URLRequest 객체의 digest 속성을 설정해야 합니다.
| |
SecurityError —
Flash Player(및 Adobe AIR의 비 응용 프로그램 샌드박스 내용)에서 이 오류는 다음과 같은 상황에서 발생합니다.
| |
Error — 메서드가 마우스 클릭이나 키 누르기 이벤트와 같은 사용자 액션에 대한 응답으로 호출되지 않는 경우. 이 요구 사항은 Flash Player 내용 및 Adobe AIR의 비 응용 프로그램 샌드박스 내용에만 적용됩니다. |
참고 사항
package {
import flash.display.Sprite;
import flash.net.navigateToURL;
import flash.net.URLRequest;
import flash.net.URLVariables;
public class NavigateToURLExample extends Sprite {
public function NavigateToURLExample() {
var url:String = "http://www.adobe.com";
var variables:URLVariables = new URLVariables();
variables.exampleSessionId = new Date().getTime();
variables.exampleUserLabel = "Your Name";
var request:URLRequest = new URLRequest(url);
request.data = variables;
try {
navigateToURL(request);
}
catch (e:Error) {
// handle error here
}
}
}
}| registerClassAlias | () | 함수 |
public function registerClassAlias(aliasName:String, classObject:Class):void| 언어 버전: | ActionScript 3.0 |
| 런타임 버전: | AIR 1.0 Flash Player 9 |
객체가 AMF(Action Message Format)로 인코딩될 때 객체의 클래스(유형)를 유지합니다. 객체를 AMF로 인코딩할 경우 이 함수는 해당 클래스의 앨리어스를 저장하여 객체 디코딩 시 클래스를 복구할 수 있도록 합니다. 객체 클래스에 대한 앨리어스가 인코딩 컨텍스트에 등록되지 않은 경우, 해당 객체는 익명 객체로 인코딩됩니다. 마찬가지로 동일한 앨리어스가 디코딩 컨텍스트에 등록되지 않은 경우, 디코딩 데이터에 대해 익명 객체가 만들어집니다.
객체를 AMF로 인코딩하는 클래스에는 LocalConnection, ByteArray, SharedObject, NetConnection 및 NetStream이 있습니다.
인코딩 및 디코딩 컨텍스트는 앨리어스에 대해 동일한 클래스를 사용할 필요가 없습니다. 대상 클래스에 소스 클래스가 직렬화하는 모든 멤버가 포함되어 있으면 이러한 컨텍스트는 클래스를 의도적으로 변경할 수 있습니다.
매개 변수
aliasName:String — 사용할 앨리어스입니다. | |
classObject:Class — 지정된 앨리어스와 연관된 클래스입니다. |
TypeError —
두 매개 변수 중 하나가 null입니다.
|
참고 사항
registerClassAlias() 함수를 사용하여 ExampleClass 클래스에 대한 앨리어스(com.example.eg)를 등록합니다. 앨리어스가 클래스에 대해 등록되어 있기 때문에 객체는 ExampleClass의 인스턴스로 직렬화 해제될 수 있으며, 코드는 true를 출력합니다. registerClassAlias() 호출이 제거되면 코드는 false를 출력합니다.
package {
import flash.display.Sprite;
import flash.net.registerClassAlias;
import flash.utils.ByteArray;
public class RegisterClassAliasExample extends Sprite {
public function RegisterClassAliasExample() {
registerClassAlias("com.example.eg", ExampleClass);
var eg1:ExampleClass = new ExampleClass();
var ba:ByteArray = new ByteArray();
ba.writeObject(eg1);
ba.position = 0;
var eg2:* = ba.readObject();
trace(eg2 is ExampleClass); // true
}
}
}
class ExampleClass {}| sendToURL | () | 함수 |
public function sendToURL(request:URLRequest):void| 언어 버전: | ActionScript 3.0 |
| 런타임 버전: | AIR 1.0 Flash Player 9 |
서버로 URL 요청을 보내지만 응답은 무시합니다.
서버 응답을 검사하려면 대신 URLLoader.load() 메서드를 사용합니다.
일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 ActionScript 3.0 프로그래밍 설명서의 보안 장에서 "네트워킹 API 제한"을 참조하십시오.
SWF 내용이 들어 있는 HTML 페이지에서 allowNetworking 매개 변수(object 및 embed 태그)를 설정하여 SWF 파일에서 이 메서드를 사용하지 않게 할 수 있습니다.
Flash Player 10 이상에서는 multipart Content-Type(예: "multipart/form-data")을 사용하고 POST 본문 내 "content-disposition" 헤더에 "filename" 매개 변수를 지정하여 업로드를 처리하는 경우 POST 작업이 업로드에 적용되는 보안 규칙의 영향을 받을 수 있습니다.
또한 multipart Content-Type의 경우 구문이 RFC2046 표준에 따라 유효해야 합니다. 구문이 유효하지 않은 경우 POST 작업은 업로드에 적용되는 보안 규칙의 영향을 받을 수 있습니다.
보안과 관련된 자세한 내용은 다음을 참조하십시오.
매개 변수
request:URLRequest — 데이터를 보낼 URL을 지정하는 URLRequest 객체입니다. |
SecurityError — 신뢰할 수 없는 로컬 SWF 파일은 인터넷 통신이 불가능합니다. 이 SWF 파일을 네트워킹 가능한 로컬 파일(local-with-networking) 또는 신뢰할 수 있는 파일로 다시 규정하면 이 문제를 해결할 수 있습니다. | |
SecurityError —
일반적으로 예약된 포트에 연결할 수 없습니다. 차단된 포트의 전체 목록은 ActionScript 3.0 프로그래밍 설명서의 보안 장에서 "네트워킹 API 제한"을 참조하십시오.
|
package {
import flash.display.Sprite;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.sendToURL;
public class SendToURLExample extends Sprite {
public function SendToURLExample() {
var url:String = "http://www.yourDomain.com/application.jsp";
var variables:URLVariables = new URLVariables();
variables.sessionId = new Date().getTime();
variables.userLabel = "Your Name";
var request:URLRequest = new URLRequest(url);
request.data = variables;
trace("sendToURL: " + request.url + "?" + request.data);
try {
sendToURL(request);
}
catch (e:Error) {
// handle error here
}
}
}
}