programing

JsonRequestBehavior를 AllowGet으로 설정할 때 어떤 '중요한 정보'가 공개될 수 있습니까?

javajsp 2023. 4. 4. 20:58

JsonRequestBehavior를 AllowGet으로 설정할 때 어떤 '중요한 정보'가 공개될 수 있습니까?

새로운 것을 테스트할 때마다 이전과 같은 오류가 발생합니다.URL내 브라우저의 주소창에 접속하여returning Json(빌트인 사용MVC JsonResult helper):

이 요구가 차단되었습니다.이는 기밀 정보가 서드파티 웹 사이트에 공개될 수 있기 때문입니다.GET request·허락하다GET requests,세트JsonRequestBehavior로.AllowGet.

인정한다고 투덜대며 Fiddler를 자극해서 포스트 리퀘스트를 하는 것이 아니라, 이번에는 정확히 어떤 것인지 궁금합니다.GET요구는 …라는 것을 폭로하다POST요청은 하지 않았습니까?

반품 시 다음을 사용하십시오.

return this.Json("you result", JsonRequestBehavior.AllowGet);

웹 사이트에GetUserWeb 메서드:

http://www.example.com/User/GetUser/32

그러면 JSON 응답이 반환됩니다.

{ "Name": "John Doe" }

이 메서드가 POST 요구만 받아들일 경우 콘텐츠는 AJAX 요구가 다음 주소로 전송될 경우에만 브라우저로 반환됩니다.http://www.example.com/User/GetUser/32POST 방법을 사용합니다.CORS를 실장하지 않은 경우 브라우저는 사용자에게 이 요청을 하는 다른 도메인으로부터 데이터를 보호합니다.

단, 그때 GET 요구를 허용하고 POST 대신 GET을 사용하여 위와 유사한 AJAX 요구를 작성하면 악의적인 사용자가 를 사용하여 자신의 사이트 컨텍스트에 JSON을 포함할 수 있습니다.scriptHTML에 태그를 붙입니다(예:www.evil.com:

<script src="http://www.example.com/User/GetUser/32"></script>

이 JavaScript는 다음 작업에는 사용할 수 없습니다.www.evil.com웹 메서드에서 반환된 개체를 읽을 방법이 없기 때문입니다.단, 이전 버전의 브라우저(예: Firefox 3)의 버그로 인해 JavaScript 프로토타입 오브젝트가 재정의될 수 있습니다.www.evil.com메서드에서 반환된 데이터를 읽습니다.이것은 JSON 하이잭으로 알려져 있습니다.

이것을 방지하는 몇 가지 방법에 대해서는, 투고를 참조해 주세요.그러나 최신 브라우저(Firefox, Chrome, IE)의 최신 버전에서는 알려진 문제가 아닙니다.

디폴트로는 ASP입니다.NET MVC 프레임워크에서는 악의적인 사용자가 JSON 하이잭이라고 알려진 프로세스를 통해 페이로드에 액세스할 수 있으므로 JSON 페이로드로 GET 요청에 응답할 수 없습니다.GET 요청에서 JSON을 사용하여 중요한 정보를 반환하지 않습니다.

GET에 대한 응답으로 JSON을 송신할 필요가 있고 기밀 데이터를 공개하지 않는 경우는, 패스하는 것으로 동작을 명시적으로 허가할 수 있습니다.JsonRequestBehavior.AllowGet에 두 번째 Json★★★★★★ 。

예를 들어

  [HttpGet] //No need to decorate, as by default it will be GET
  public JsonResult GetMyData(){  
    var myResultDataObject = buildMyData(); // build, but keep controller thin
    // delegating buildMyData to builder/Query Builder using CQRS makes easy :)
    return Json(myResultDataObject, JsonRequestBehavior.AllowGet);
  }

여기 GET 메서드에 Json을 사용하지 않는 이유에 대한 Phil Hack의 흥미로운 기사가 있습니다.

MVC 응용 프로그램에서 클라이언트에 json 개체를 반환하려면 JsonRequestBehavior를 명시적으로 지정해야 합니다.허용개체를 반환할 때 가져옵니다.그 결과, 이 문제를 해결하기 위해 아래와 같이 json 데이터를 반송합니다.

    return Json(yourObjectData, JsonRequestBehavior.AllowGet);

JsonRequestBehavior를 사용해야 합니다.AllowGet for Json Response는 다음과 같습니다.

return Json(YourObject, JsonRequestBehavior.AllowGet);

Json("Success", JsonRequestBehavior)을 반환합니다.Allow Get)

언급URL : https://stackoverflow.com/questions/21452925/what-sensitive-information-could-be-disclosed-when-setting-jsonrequestbehavior