HTTP Method Get로 개인정보를 보낼 수 있을까요?

3699 단어 HTTPSHTTP보안
제목 내용을 생각한 계기는 사내 연구회에서 체계적으로 배우기 안전한 웹 애플리케이션을 만드는 방법 취약점이 생기는 원리와 대책 실천을 읽은 것이었습니다.
다시 왜 안 되는가라고 하면 확실히 근거를 가지고 설명할 수 없다고 생각해 보았습니다

Get이라도 좋을까 생각한 패턴은 다음과 같은 경우입니다.

예를 들면, 회원 등록 기능 등으로 확인 화면으로부터 되돌아가는 버튼을 이용하여 입력 폼으로 천이하는 경우, 입력한 내용을 그대로 유지하고 싶다. 그 때는 HTTPS의 경우라면 Get로 돌아가도 괜찮을까?

Get과 Post의 구분은 어떠한 경우?



Get과 Post의 구분은 다음과 같은 경우에 생각하면 좋을 것 같습니다.
  • Get 메소드는 참조 (리소스 취득)에만 사용됩니다.
  • Get 메서드는 부작용이 없는 것으로 기대된다
  • 비밀 정보의 송신에는 POST 메소드를 사용하는 것

  • 인용: 안전한 웹 애플리케이션을 만드는 방법 p.35

    HTTPS에서도 Referer에서 비밀 정보는 누출



    https: 에서 http: 로의 링크에서 Referer: 는 보내지 않음 입니다. 이것을 이용해, 누출하고 싶지 않은 URL 를 포함한 호스트 전체를 https 로 제공하면, http: URL 에의 참조가 있어도 Referer: 의 송신을 억제할 수 있습니다.
    인용구 : Referrer 제어

    그러나 https: 페이지에 Referer: 가 전송됩니다. https: 화하는 것으로 Referer: 가 송신되지 않게 되었다고 안심해 버리는 경향이 있습니다만, 실제로는 대책으로서 불완전하고, 위험합니다.
    인용구 : Referrer 제어

    해당 페이지에 외부 링크가있는 경우 위의 이유로 Referrer에서 개인 정보가 유출되는 문제에서 POST로 전환하는 것이 좋은 것 같습니다.

    다음은 검색 기능이 있는 화면에서 이미지가 표시되는 부분이 있었으므로, 크롬 개발자 도구에서 보면 외부 링크의 이미지에 액세스하여 Referrer에서 검색 매개 변수가 추가되어 보내지고있었습니다



    개인정보가 액세스 로그에 남아 있음



    Get의 경우에는, 파라미터에 부가한 개인정보가 로그에 기입되어 버리기 위해서, 액세스 로그의 누설에도 신경쓰지 않으면 안 되어 버린다고 하는 곳에서 리스크가 더욱 높아져 버리는 문제가 있는 것처럼 입니다

    다음은 실제 웹 서버(Apache)의 액세스 로그이지만 GET 메서드 때문에 매개 변수가 액세스 로그에 남아 있음을 알 수 있습니다.
    192.168.11.2 - - [24/Feb/2013:07:16:48 +0900] "GET /hello.php?id=yamada&password=password HTTP/1.1" 200 105 "http://192.168.11.9/login.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
    인용구 : 웹 보안 작은 방

    참고



    문헌


  • 체계적으로 배우기 안전한 웹 애플리케이션을 만드는 방법 취약점이 생기는 원리와 대책 실천

  • 사이트


  • Referrer 제어
  • 웹 보안 작은 방
  • 좋은 웹페이지 즐겨찾기