2011-11-17 4 views
3

웹 응용 프로그램에서 일부 전역 변수를 사용하고 있습니다.이 변수는 Html/Javascript로 작성되었습니다. 페이지 (또는 일부)에서이 변수를 사용하고 있으며 때로는 아약스 호출의 게시 데이터로 사용되기도합니다. 내 질문은 : 얼마나 안전한가? 물론 나는 (예를 들어 콘솔을 사용하여)이 변수에 대해 다른 값을 설정할 수 있으며,이 변수에 의존하는 호출이 이루어진다. 사용자가 액세스 할 수없는 항목에 해당하는 일부 ID를 설정했다고 가정 해보십시오.자바 스크립트 전역 변수 - 보호

어떻게해야합니까? 사전

+0

"사용자가 액세스 할 수없는 항목에 해당하는 ID를 설정한다고 가정 해보십시오." 그것이 서버 측 검증이 시작되는 곳입니다. 그들은 액세스 할 수없는 경우, 서버가 알고 있어야하고 작업을하기 전에 확인하십시오! – epascarello

+0

오른쪽 ... 나는 서버 측 유효성 검사를 삭제하지 않았습니다. 오직 클라이언트쪽에 대한 몇 가지 클로킹을 설정 :) 감사합니다 – jose

답변

7

보안 측면에서 보면 웹 응용 프로그램과 전혀 다른 점이 없습니다.

브라우저에서 보낸 모든 내용은 서버에서 신뢰할 수없는 것으로 처리해야합니다. 여기에는 URL 매개 변수, 양식 게시 데이터, 쿠키, http 헤더 및 javascript로 제어되는 항목이 포함됩니다. 이러한 모든 항목은 공격자가 조작 할 수 있습니다.

기본적으로 클라이언트의 값은 중요하지 않으므로 새로운 HTTP 요청 (XHR 포함) 형식으로 서버에 충돌했을 때 걱정할 필요가 있습니다. 그 시점까지 가치가 나쁜 변수는 아무런 피해를 입을 수 없습니다.

서버가 현재 사용자를 올바르게 인증하고 수행 할 권한이있는 데이터 및 작업에만 액세스 할 수있게하십시오. 브라우저에서 수신 한 모든 데이터가 올바른지 (알고있는 경우) 또는 올바른 데이터 유형과 예상 한도 내에서 확인되었는지, 데이터를 거부하고 그렇지 않은 경우 작업을 중단하는지 확인하십시오.

+1

이것은 유일한 정답입니다. Javascript 솔루션이나 브라우저 보안에 중점을 둔 다른 사람들은 필요한 모든 데이터를 스푸핑하는 커맨드 라인에서 말미암아 OP 앱이 쉽게 공격받을 수 있음을 잊어 버리는 것처럼 보입니다. 컬 (curl)이 그것을 보호한다면 (왜?) 우리는 유용한 스크립팅 언어로이를 수행 할 수 있으며 사소한 것입니다. –

1

에서

감사합니다 당신이 jQuery를 사용하는 경우, 당신은 당신이 요소와 데이터를 연결할 수있는이와 $.data()

을 사용할 수 있습니다, 따라서 권한이없는 사용자가 액세스 할 수 없습니다

+0

내가 원하는 것을 보내는 내 자신의 자바 스크립트 기능을 쓸 줄 알았지? @ Cheekysoft의 대답은 훨씬 더 상황을 설명합니다. – duri

+0

사실이 아닙니다. 공격자는 위치 표시 줄 또는 콘솔에서 javascript URL을 실행할 수 있습니다. 또는 파이어 버그와 같은 자바 스크립트 디버거를 열고 전역, 로컬 또는 jquery 메타 데이터인지 여부에 관계없이 모든 변수 값을 변경하십시오. – Cheekysoft

+1

나는 싱글 톤 패턴을 사용하여 글로벌 데이터를 관리 할 것이다. 해당 변수를 private 멤버로 숨기고 getter 만 노출합니다. – ComfortablyNumb

-2

자바 스크립트는 런타임 유형 식별 (모든 것은 시각적 기본과 같은 var입니다)이며 느슨한 유형의 언어입니다.

  1. 사용자는
  2. 그것은 액세스하거나 사용자 위치, 파일, 수요 등이없는 열려있는 창을 볼 수 없습니다 (R/쓰기) 파일에 액세스 할 수 있지만

    자바 스크립트는 자체 보안 모델을 가지고

자바 스크립트 파일의 출처를 보호하거나 심지어는 서버 측을 보호하기 위해 pwd를 보호하는 것도 가능하지 않습니다.

에도 암호화 또는 암호 해독 나던 작업을 어떻게 든 당신이 키

, 자바 스크립트가 실행시에 자동 수정할 수 있습니다 더 나쁜 사용자에게 필요가 있기 때문에 - 자주가 수행합니다. 즉 보안 위협이 클라이언트에 전달 될 때 구문이나 코드에 없지만 스크립트가 실행되면 나타날 수 있습니다.

악의적 인 스크립트를 구문 분석하고 거부하는 JavaScript 프록시가 없으며 코드 기반 악용에 대해 JavaScript를 사전 검색하는 솔루션이 없으며 문제에 대한 외부 답변이 없습니다. 즉, 브라우저 개발자가 우리가 좋아하는 모든 종소리와 호루라기가있는 좋은 브라우저를 작성하는 것뿐만 아니라 보안을 위해서도 의존해야합니다.