본문 바로가기

ActionScript/Tip

외부데이타 정보유출(캐쉬) 방지 편법

다 아는 사실이지만 몇 자 적는다.

플래시에서 서버프로그램을 이용한 외부 데이타를 로드 하게 되면 캐쉬에 그 정보들이 고스란히 남는다. 캐쉬에 정보가 남지 않는 방법들이 웹상에 있지만 잘 되지 않는다. 내가 했을 때는 100%되지 않았다. 몇 몇 개발자들은 외부데이타를 약간의 편법으로 작성을 하지만 그 것 또한 보는데 불편할 뿐 어떤 내용인지는 알 수가 있다. 더구나 플래시에서 정확한 정보를 볼 수가 있다.

 

그럼 어떻게 하는가?

 

방법은 외부데이타를 2번 부른는거다.


PHP

<?
$a=$_POST['ch'];
if($a){
        echo "&check=오리지날 데이타";
}else{
        echo "&check=캐쉬는 왜 보세요.ㅋㅋㅋ";
}
?>


AS


System.useCodepage = true;
////////////////////////////////////////////////////////////
// 실시간 체크함수
////////////////////////////////////////////////////////////
function checkNew() {
        var random:Date = new Date();
        _global.iam209 = random.getTime();
}
////////////////////////////////////////////////////////////
// 외부 데이타 로드 버튼
////////////////////////////////////////////////////////////
var dataLoad:Object = new Object();
dataLoad.click = function(evt:Object) {
        dataReceive("OK");
};
dataLoadBtn.addEventListener("click", dataLoad);
////////////////////////////////////////////////////////////
// 비우기 버튼
////////////////////////////////////////////////////////////
var dataReset:Object = new Object();
dataReset.click = function(evt:Object) {
        result_ta1.text =""
        result_ta2.text =""
};
dataResetBtn.addEventListener("click", dataReset);
////////////////////////////////////////////////////////////
// 외부 데이타 로드 함수
////////////////////////////////////////////////////////////
function dataReceive(param:String) {
        var result_lv:LoadVars = new LoadVars();
        result_lv.onLoad = function(success:Boolean) {
                if (success) {
                        if (param != "") {
                                result_ta1.text = this.check;
                                dataReceive("");
                        } else {
                                result_ta2.text = this.check;
                        }
                }
        };
        var send_lv:LoadVars = new LoadVars();
        send_lv.ch = param;
        if (param != "") {
                checkNew();
        }
        send_lv.sendAndLoad("http://www.iam209.com/naver_blog/20050412/check.php?iam209="+_global.iam209, result_lv, "POST");
}

SWF


1차 로드 텍스트필드에는 실질적으로 사용될 데이타들이고

2차 로드 텍스트필드에는 사용자의 캐쉬에 남아 있는 데이타들이다.

 

캐쉬를 확인해 보면 이해가 더욱 쉬울 것이다.