>

JSONP 에스컬레이션 취약점을 방지하기 위해 모든 JSON 응답 앞에 ")]} ', \ n"과 같은 따옴표를 붙이고 싶습니다.

play2 프레임 워크에서 어떻게 할 수 있습니까? 바디 파서를 JSON으로 설정하고 모든 응답을 수동으로 접두어로 붙 였지만 기본 프레임 워크 기능을 통해이 작업을 수행하는보다 우아한 방법을 찾고 있습니다.

  • 답변 # 1

    JSONP 에스컬레이션 취약점은 무엇을 의미합니까? 인터넷 검색을 통해이 질문을 첫 번째 결과로 반환하고 다른 것은 거의 없습니다.

    사람들이 JSON을 JSONP로 사용하지 못하게 하시겠습니까? 그런 다음 JSONP 패딩을 포함하지 마십시오.

    브라우저 외부에서 동일한 원본 정책 문제없이 다른 프로그램에서 JSON을 사용하지 못하게하거나 자체 서버 등을 사용하여 자체 도메인 등의 클라이언트에 서비스하도록 JSON을 프록시하지 않으시겠습니까? 그렇다면 불가능합니다. 불구가 된 JSON을 제공하더라도 어쨌든 알아낼 것입니다. 당신이 할 수있는 유일한 것은 이것을 금지하는 조건을 작성하고 고소하는 것입니다 (행운을 빕니다). .api.http.Writable. 컨트롤러가 확장하는 특성에 암시 적 정의를 추가하여이를 수행 할 수 있습니다.

    import play.api.http.Writeable
    trait SecuredJsonController {
      implicit def writeableOf_JsValue(implicit codec: Codec): Writeable[JsValue] = {
        Writeable(jsval => codec.encode(")]}',\n" + jsval.toString))
      }
    }
    
    

    이것은 저에게 잘 작동합니다. Zed에 대한 답장의 의미를 잘 모르겠지만 원래 요청한대로 응답 본문을 채워 JSON 취약점 악용을 시도하고 중단하는 것이 매우 일반적입니다. 구글은 "while (1);" "for (;;);"가 포함 된 페이스 북 좋은 보호 책입니다. 이러한 취약점에 대한 자세한 내용은 여기를 참조하십시오.

  • 이전 java - 활동에서 서비스로 int 검색이 작동하지 않습니다
  • 다음 c++ - regex_search에 matchsuffix ()를 저장하려면 str ()을 사용해야합니까?