2011-09-16 3 views
2

클라이언트 브라우저에 로컬로 저장된 모든 소스에서 모든 localstorage 데이터를 나열 할 수 있습니까?모든 소스에서 html5 localstorage 데이터 나열

크로스 사이트 스크립팅 (XSS)이 다른 소스에 대한 로컬 저장소 데이터를 가져 오거나 수정할 수 있다는 것을 알고 있습니다. 그것은 다른 사이트의 소스 URL을 알아야하기 때문에 XSS가 소스 사이트를 인식하지 못하면 목록을 찾아 크로스 사이트 로컬 스토리지 데이터를 변경할 수 있습니다.

제 생각에는 localstorage에 데이터를 저장하고 무작위 소스에 연결하고 소스가 클라이언트의 키가되도록하는 것이 좋습니다. 그래서 그 키를 기반으로 locastorage의 특정 소스에서 데이터를 얻을 수 있습니다. 전체 아이디어는 다른 사이트가이 영구 데이터에 액세스하지 못하게하는 것입니다.

+0

흥미로운 개념이지만 다른 사이트의 로컬 저장소 (예 : localStorage 사용)를 직접 요청할 수는 없습니다. 하지만 사이트 b의 주요 데이터를 반환하는 사이트 b의 js 스크립트의 사이트 a에서 ajax 요청을 수행하는 것을 상상할 수 있습니다. 흠, 나는 그것을 소용돌이 치다. 대안으로는 고유 ID (암호화 된 json 파일 일 수 있음)로 클라우드 저장소에서 데이터를 가져올 수 있습니다. – Mark

답변

2

window.localStorage.key가 해결책입니다. 예 :

/* use high programming standards!! */ 
var i = 0, //i is standing for int 
    oJson = {}, //o is standing for object 
    sKey; //s is standing for string 
while ((sKey = window.localStorage.key(i))) { 
    oJson[sKey] = window.localStorage.getItem(sKey); 
    i++; 
} 
console.log(oJson); 
관련 문제