2013-06-22 2 views
0

질문 하단최고의 OOP

까지 내가 전역 변수는 사용할 수 다른 코딩 선택이있다, 그 코드 보안에 보안 위험이 있다고 들었습니다 질문에

건물의 보안을위한 자바 스크립트 실행 하나의 함수에서 다른 함수, 예를 들어 "함수 A가 함수 B에서 보일 수 있도록, 또는 함수 A의 변수가 함수 B에서 전달되고 사용할 수 있도록"표시 및 사용할 수 있도록합니다.

질문 : 클라이언트 측이 문제가 아니었다면, 캡슐화 된 일을 계속하고 변수 조작에 노출되는 것으로부터 가장 큰 보안을 추가 자바 스크립트 구문에서 가장 OOP 구조 또는 연습을 무엇입니까? 그냥 좋은 OOP 연습 문제.

+0

Doug의 권한있는 패턴을 사용하여 생성자 또는 팩토리 내부에 정의 된 private 변수에 영향을주는 공용 메서드, 속성 및 이벤트를 제공 할 수 있습니다. Object.freeze, Object.defineProperty 및 Object.seal은 모두 최신 브라우저에서 속성 액세스 보안을 제공 할 수 있습니다. – dandavis

답변

4

자바 스크립트는 모든 것이 표시되고 조작이 가능한 클라이언트 측 전체를 실행하므로 실제로는 절대 안전하지 않습니다. 클로저를 사용하여 범위를 관리하여 내 다른 코드 블록에 적합한 범위로 범위를 제한하는 경향이 있습니다. 그러나 이것은 보안상의 이점을 제공하지 않습니다.

내부 메소드와 변수에 대한 좋은 캡슐화를 제공하므로 클로저 모델을 선호합니다. 글로벌 공간을 "오염시키는"걱정없이 기능을 정의 할 수 있으며 잠재적으로 다른 기능을 방해 할 수 있습니다.

내가 아는 한, 조작으로부터 당신을 보호 할 수있는 패턴이 없습니다. 가장 좋은 조언은 JavaScript 변수를 신뢰하지 않고 항상 값을 승인하기 전에 적절한 서버 측 유효성 검사를 사용하는 것입니다.

+0

클라이언트 쪽에서 문제가 없다면, 1. 좋은 OOP 구조가 무엇이고, 2. 조작에서 변수를 보호합니까? – ryanjohnsond