찾다

 >  Q&A  >  본문

java - 在前后端分离的项目中,如何验证前端请求数据是否合法

高洛峰高洛峰2770일 전1086

모든 응답(5)나는 대답할 것이다

  • PHPz

    PHPz2017-04-18 10:47:05

    백엔드가 분산되어 있는 경우(예: 클라우드 서버) oauth2.0의 토큰 확인 방법을 사용하는 것이 좋습니다. 개발 목적이라면 쿠키를 사용할 수 있습니다.
    oauth 로그인 과정은 다음과 같습니다.

    1. token, user_id, login_at,expiration_at 필드를 사용하여 새 토큰 테이블을 생성합니다

    2. 사용자는 계정과 비밀번호를 사용하여 로그인합니다

    3. 로그인에 성공하면 데이터 테이블 토큰에 레코드가 삽입되고 사용자의 이전 토큰은 모두 삭제되거나 만료되도록 설정되며 토큰은 프런트 엔드로 반환됩니다.

    4. 프론트엔드에서 Ajax 사용 시 헤더 추가Authorization=token

    5. 백엔드는 요청 헤더의 Authorization을 읽고 이를 데이터베이스와 비교합니다. 권한이 존재하고 만료되지 않은 경우 합법적인 사용자로 간주되며, 그렇지 않으면 오류가 반환됩니다.

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 10:47:05

    1 사용자 로그인은 일반적으로 쿠키 + 세션이며, 서버가 동일하지 않더라도 둘 중 하나에 요청 전달 기능이 있으면 좋을 것입니다. 동일 출처 정책의 제한으로 인해 쿠키를 사용할 수 없습니다. 다른 도메인 이름에 액세스할 때.

    2 일반적으로 데이터의 요약을 생성하기 위해 프런트 엔드에 요약 기능이 있지만 백엔드는 동일한 요약 기능을 사용하여 게시된 데이터의 요약을 생성하고 비교합니다. 게시된 데이터의 요약과 일치하면 데이터가 수정되지 않았음을 증명합니다. 하지만 어떤 요약 기능을 사용하는지 사용자가 알면 그 데이터의 요약을 생성해 게시할 수 있기 때문에 이론상으로는 판단이 불가능하지만 실제로 일반 사용자들은 이를 모릅니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-18 10:47:05

    1. JWT, json 웹 토큰.

    2. 백엔드에서는 데이터 변경 여부를 어떻게 확인하나요? 백엔드 DB에 데이터가 저장되지 않는다는 뜻인가요?

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-18 10:47:05

    백엔드 데이터 검증, 프론트엔드와 백엔드가 분리된 경우 데이터 보안을 위해 필요합니다.
    일반적인 방법은 서명 암호화를 수행하는 것입니다
    사용해야 하는 것은 키와 비밀입니다
    예: Taobao API 암호화 방법 Taobao 서명

    키는 사용자 ID이고, 이름은 본인이며, 비밀은 키를 나타냅니다. 키는 서버에서 생성되며 클라이언트를 암호화할 때만 사용할 수 있습니다. 데이터 전송 중에는 Sercet 정보가 포함될 수 없습니다.
    클라이언트가 특정 규칙에 따라 모든 요청 데이터를 암호화한 후 백엔드는 제출된 데이터가 동일한 방식으로 암호화되었음을 확인한 다음 서명 매개변수를 비교하여 일관성이 있는지 확인합니다. 전송 과정에서 데이터가 변조되지 않았습니다.
    또한 시간 오류가 전후 5분을 초과하지 않아야 하는 타임스탬프 매개변수와 같은 시간 유효성 감지도 필요합니다.
    또 다른 점은 백엔드가 수신한 후 데이터를 반복적으로 요청한다는 것입니다. 기호를 저장하기 위해 캐시를 만들고 만료 시간은 5분(위 시간에 해당)입니다. 동일한 기호는 이 요청이 반복적으로 요청된 후 거부되었음을 나타냅니다.

    기본적으로 이는 데이터 보안, 적시성, 중복 방지 등을 보장하기 위한 프로세스입니다.

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 10:47:05

    sessionStorage 또는 localStorage는 백그라운드 자체에서 생성된 특수 비밀번호를 저장합니다. 각 요청은 헤드를 통해 전달되며 데이터는 백그라운드를 통해 합법적인지 확인됩니다

    회신하다
    0
  • 취소회신하다