javascript - Ajax API에서 보안 확인을 수행하는 방법은 무엇입니까?

WBOY
풀어 주다: 2016-08-08 09:06:48
원래의
1546명이 탐색했습니다.

웹에서 Ajax를 사용하여 API를 호출할 때 다른 웹사이트에서 호출하지 못하도록 보안 검증을 어떻게 해야 하나요?

APP 호출인 경우 인터페이스 보안 문제를 어떻게 해결하나요? 그리고 API가 어떻게 공용 네트워크에 노출되지 않을 수 있습니까? 귀하의 APP을 호출할 수 있는 한, 공용 인터넷에 노출된 것으로 간주되지 않나요?

답글 내용:

웹에서 Ajax를 사용하여 API를 호출할 때 다른 웹사이트에서 API를 호출하지 못하도록 보안 검증을 어떻게 해야 하나요?

APP 호출인 경우 인터페이스 보안 문제를 어떻게 해결하나요? 그리고 API가 어떻게 공용 네트워크에 노출되지 않을 수 있습니까? 귀하의 APP을 호출할 수 있는 한, 공용 인터넷에 노출된 것으로 간주되지 않나요?

Ajax는 도메인 간 문제를 해결할 수 없습니다. Ajax 데이터를 얻기 위해 서버를 통해 도메인 간 시뮬레이션 요청을 보낼 수 있습니다

두 가지 방법이 있지만 기본적으로 유사합니다. 하나는 요청 헤더이고 다른 하나는 페이지에 입력 토큰을 추가하는 것입니다. 하지만 이 두 가지 방법의 주요 문제점은 토큰을 암호화하는 것입니다.
예를 들어 , 토큰 = md5(IP + 난수 + 타임스탬프 + UID + 세션_비밀) 실제로 콘텐츠를 직접 정의할 수 있으며 주로 암호화됩니다

암호화된 콘텐츠를 세션에 넣고 세션 만료 시간을 설정합니다

1. 헤더를 요청하는 경우

access_token 요청 헤더를 추가하고 백그라운드에서 요청 헤더의 내용을 가져온 후 세션의 값과 비교하면 문제가 없음을 증명하고 세션이 진행됩니다. 무효하다.

2. 요청 헤더와 유사하지만 암호화된 값이 입력에 숨겨집니다. Ajax를 제출할 때 이 값을 가져와서 매개변수에 넣습니다.

APP에 대한 질문은 나중에 답변하세요

APP에 접속하려면 공용 네트워크에 있어야 합니다. 현재 당사의 보안 솔루션은 매개변수 암호화입니다

예를 들어 a=1&n=2를 제출하려는 경우

그런 다음 실제로 제출할 때 매개변수를 암호화해야 합니다. mid=xxx&a=1&b=2&sign=md5(' mid=xxx&a=1&b=2'+key)

mid는 클라이언트가 인터페이스를 호출하기 위한 계정을 나타내며, 계정은 키에 해당합니다

서버는 제출된 매개변수가 올바른지 매번 확인해야 하는데, 이것이 마지막 서명 매개변수입니다

또 다른 중요한 점은 클라이언트가 네이티브 APP인 경우 디컴파일을 방지하기 위해 코드를 난독화하고 암호화해야 한다는 것입니다. 그러면 이 키는 정기적으로 변경되며, 버전이 업데이트되면 키도 변경됩니다

또 다른 방법은 매개변수를 제출하기 전에 모든 매개변수를 암호화된 주소에 제출하도록 요청하는 것입니다. 이 주소는 매개변수를 기반으로 암호화된 토큰을 반환한 다음 실제 매개변수를 백엔드에 제출합니다. 확인을 위해

이 방법의 단점은 네트워크 요청이 한 번 더 필요하다는 점이며 이는 하이브리드 애플리케이션에만 적합합니다

이런 내용은 다른 블로그를 통해 배웠고 Taobao나 JD.com과 같은 앱의 인터페이스가 어떻게 처리되는지는 모르겠습니다.

서버에 추가 설정이 없으면 ajax가 도메인 간에 API를 호출할 수 없습니다. 또한 요청한 도메인 이름을 가져와서 판단할 수도 있습니다.

당신이 승인한 웹사이트만 접근할 수 있습니다
요청 헤더에 액세스 토큰을 추가할 수 있습니다

인터페이스 성격의 API 호출이라면 공용 인터넷에 노출되어서는 안 되며, 프론트엔드 js에 사용되는 ajax라면 사용자가 로그인한 후에만 호출할 수 있도록 보장해야 합니다. , 이는 세션을 확인하는 것을 의미합니다.

ajax 요청 헤더에 token를 추가하세요(예:

).
<code>$(function() {
    $.ajax({
        type: "GET",
        url: "godruoyi.com",
            beforeSend: function(request) {
                request.setRequestHeader("token", "asdadsadasdasdadadad");
            },
            success: function(result) {
                alert(result);
            }
        });
});</code>
로그인 후 복사

또는 템플릿 기본 클래스에

을 추가하세요.
<code>$.ajaxSetup({
    headers: { 'token' : 'xxxxxxxxxxxx' }
});</code>
로그인 후 복사

token 로그인 API에서 반환할 수 있는 유효한 값입니다. 이는 애플리케이션에서 설계해야 합니다(신원 확인, 토큰 가져오기). 서버는 이 토큰을 사용하여 사용자를 식별합니다.

Oauth2과 다소 유사합니다. oauth2.0

을 참조하세요.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!