
문제 소개
최근에 일부 요청 서명 알고리즘을 작업 중인데 서명되는 부분에 쿼리 문자열을 포함하는 것에 대한 의견이 "다양하다"는 것이 나왔습니다.
간단히 말해서, 서명을 위해 문자열에 쿼리 문자열을 포함하는 것에 반대하는 사람의 주장은 쿼리 문자열이 변경될 수 있다는 것입니다(예: 값 변경, 인수 제거/추가, 순서 변경 가능).
또한 Authorization
헤더 숨기기(예: Apache/WSGI), 요청 방법 변경(로드 밸런서, 아마도 Amazon 서버에서 이러한 작업을 수행함)과 같은 작업을 경험했지만 프록시 또는 로드 밸런서에서 이러한 동작을 경험한 적이 없습니다. 일부 사용자 정의 스크립트/규칙을 사용하여 역방향 프록시 또는 로드 밸런서에서 이러한 동작을 활성화할 수 있다는 것을 알고 있지만 다음을 사용하여 수행할 수 있습니다.어느요청의 일부.
쿼리 문자열이 포함되어야 한다는 가정을 기반으로 많은 작업이 수행되었으며 요청의 가장 중요한 부분 중 하나에 서명하지 않는 것은 어리석은 것처럼 보입니다. 따라서 원시 형식(URL 내에서 전달됨)에 쿼리 문자열을 포함하는 것이 향후 문제가 될지 여부를 알아야 합니다.
실제 질문
그래서 내 질문은 다음과 같습니다
프록시나 로드 밸런서가 쿼리 문자열을 변경하는 것이 일반적인가요? 나에게는 어리석은 것 같습니다. 기본적으로 이를 수행하는 프록시 또는 로드 밸런서(소프트웨어 또는 설치)를 알고 있습니까?
그러한 경우 프록시/로드 밸런서 수준에서 서명 확인을 처리할 수 있다고 확신하지만 이것이 우리가 제어하지 않는 중개자 사이에서 일반적이라면 실행 가능한 주장이 될 수 있습니다.
당신이 그것에 대해 알고 있는 것을 알려주시기 바랍니다. 궁금한 점이 있으면 알려주세요.
설명하자면,쿼리 문자열?arg1=val1&arg2=val2
다음 URL의 " " 부분을 의미합니다 .
http://example.com/something/else?arg1=val1&arg2=val2
그리고 "쿼리 문자열 변경" 내 말은 클라이언트와 서버에서 다르게 보이도록 만들 수 있는 모든 작업을 의미합니다(서버는 클라이언트가 사용한 것과 다른 쿼리 문자열을 봅니다).
답변1
많은 최신 역방향 프록시는 쿼리 문자열을 변경할 수 있습니다. 하지만 로드 밸런서나 프록시가 기본적으로 그렇게 할 이유가 없습니다.
고정 세션 로드 밸런싱을 위해 URI를 사용할 수도 있지만 이는 정말 어리석은 일입니다.
그래서: 아니요, 저는 기본적으로 URI와 매개변수를 변경하는 로드 밸런서를 모릅니다.
답변2
아직 이를 수행하는 프록시를 본 적이 없지만 IP별로 수행할 수 없고 사용자가 쿠키를 비활성화한 경우에도 작동하기를 원하는 경우 세션 고정성을 위한 실행 가능한 솔루션이 될 수 있습니다.