2009-02-03 5 views
0

나는 다양한 작업을 수행하기 위해 https를 통해 웹 서비스를 사용하는 공개 웹 사이트 (승인 필요 없음)를 유지 관리하고 있습니다. 웹 서비스에 대한 대부분의 호출은 javascript에서 호출됩니다.최소한의 웹 서비스 보안 방법?

최근에 나에게 발생한 것은 악의적 인 해커가 시스템을 혼란에 빠뜨리려고 직접 웹 서비스를 호출 할 수 있다는 것입니다.

현실적으로 할 수있는 피해는 그리 크지 않지만 실제로는 이러한 것을 예측하기가 어렵습니다.

웹 서비스 호출이 웹 서비스에 대한 무단 및/또는 악의적 인 액세스를 방지하는 데 사용할 수있는 최상의 접근 방식 인 자바 스크립트 코드 (클라이언트에서 사용 가능)에서 노출된다는 것을 명심하십시오.

슬프게도 IP로 액세스를 제한 할 수는 없습니다. Windows Forms 기반 클라이언트 응용 프로그램이 있기 때문에 웹 서비스와 상호 작용합니다.

Windows 인증을 사용하는 것이 어려울 수 있습니다. 이러한 클라이언트 앱은 전 세계 어느 곳에서나 실행할 수 있으며 사용자는 특정 AD 그룹 또는 도메인과 관련되지 않습니다.

두 가지 액세스 클래스와 자바 스크립트 코드 노출을 염두에두면 어떤 제안이라도 고맙겠습니다.

답변

3

자바 스크립트로 호출되는 모든 항목은 해당 자바 스크립트를 사용할 수있는 권한을 가진 악의적 인 사용자가 쉽게 모방 할 수 있습니다. 더 많은 서버 측 솔루션을 사용하도록 페이지를 수정하는 것이 좋습니다. AJAX는 쉽게 악용 될 수없는 물건으로 남겨 두십시오.

권한이없는 사용자를 방지하는 것은 모든 공개 액세스를 지원하는 것보다 훨씬 쉽습니다. 웹 서비스에 대한 인수 중 하나로 사용자의 쿠키에 시간 만료 guid를 추가하면 개별 사용자에게 연결되므로 응용 프로그램에 일반적으로 적용하기 어려운 계층이 생깁니다.

자바 스크립트를 실행할 수있는 사람이라면 누구나 문제를 해결할 수 있습니다. javascript에 대한 액세스 권한이없는 사용자는 웹 서비스에 쉽게 액세스하지 못하게 할 수 있습니다.

2

약간의 작업이 필요하지만 페이지가 ASP.net이라면 공유 세션을 설정하고 웹 서비스의 EnableSession 속성을 켜고 세션 데이터를 사용하여 세션을 보호 할 수 있습니다. 개요는 여기에서 확인할 수 있습니다. http://blogs.lessthandot.com/index.php/WebDev/ServerProgramming/ASPNET/sharing-asp-net-session-state-between-we

이렇게하면 Windows 응용 프로그램에서 사용할 다른 "버전"의 서비스가 필요합니다.

+0

다른 버전의 보안을 유지하려면 어떻게해야합니까? –

+0

마음에 떠오르는 한 가지 방법은 cmartin에서 제안한 방법과 비슷합니다. Windows 응용 프로그램을 시작할 때 일종의 토큰을 발급하여 서비스의 매개 변수로 전달할 수 있습니다. 발급 된 토큰 및 요청의 IP 주소) – AlexCuse