목차
답글 내용:
백엔드 개발 PHP 튜토리얼 javascript - Ajax API에서 보안 확인을 수행하는 방법은 무엇입니까?

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

Aug 08, 2016 am 09:06 AM
javascript php

웹에서 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

을 참조하세요.
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드 Dec 24, 2024 pm 04:42 PM

Ubuntu 및 Debian용 PHP 8.4 설치 및 업그레이드 가이드

CakePHP 날짜 및 시간 CakePHP 날짜 및 시간 Sep 10, 2024 pm 05:27 PM

CakePHP 날짜 및 시간

CakePHP 프로젝트 구성 CakePHP 프로젝트 구성 Sep 10, 2024 pm 05:25 PM

CakePHP 프로젝트 구성

CakePHP 파일 업로드 CakePHP 파일 업로드 Sep 10, 2024 pm 05:27 PM

CakePHP 파일 업로드

CakePHP 라우팅 CakePHP 라우팅 Sep 10, 2024 pm 05:25 PM

CakePHP 라우팅

CakePHP 토론 CakePHP 토론 Sep 10, 2024 pm 05:28 PM

CakePHP 토론

CakePHP 빠른 가이드 CakePHP 빠른 가이드 Sep 10, 2024 pm 05:27 PM

CakePHP 빠른 가이드

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법 Dec 20, 2024 am 11:31 AM

PHP 개발을 위해 Visual Studio Code(VS Code)를 설정하는 방법

See all articles