JsonRequestBehavior를 AllowGet으로 설정할 때 어떤 '중요한 정보'가 공개될 수 있습니까?
새로운 것을 테스트할 때마다 이전과 같은 오류가 발생합니다.URL
내 브라우저의 주소창에 접속하여returning Json
(빌트인 사용MVC JsonResult helper
):
이 요구가 차단되었습니다.이는 기밀 정보가 서드파티 웹 사이트에 공개될 수 있기 때문입니다.
GET request
·허락하다GET requests
,세트JsonRequestBehavior
로.AllowGet
.
인정한다고 투덜대며 Fiddler를 자극해서 포스트 리퀘스트를 하는 것이 아니라, 이번에는 정확히 어떤 것인지 궁금합니다.GET
요구는 …라는 것을 폭로하다POST
요청은 하지 않았습니까?
반품 시 다음을 사용하십시오.
return this.Json("you result", JsonRequestBehavior.AllowGet);
웹 사이트에GetUser
Web 메서드:
http://www.example.com/User/GetUser/32
그러면 JSON 응답이 반환됩니다.
{ "Name": "John Doe" }
이 메서드가 POST 요구만 받아들일 경우 콘텐츠는 AJAX 요구가 다음 주소로 전송될 경우에만 브라우저로 반환됩니다.http://www.example.com/User/GetUser/32
POST 방법을 사용합니다.CORS를 실장하지 않은 경우 브라우저는 사용자에게 이 요청을 하는 다른 도메인으로부터 데이터를 보호합니다.
단, 그때 GET 요구를 허용하고 POST 대신 GET을 사용하여 위와 유사한 AJAX 요구를 작성하면 악의적인 사용자가 를 사용하여 자신의 사이트 컨텍스트에 JSON을 포함할 수 있습니다.script
HTML에 태그를 붙입니다(예: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
'programing' 카테고리의 다른 글
리액트 라우터를 사용하여 다른 루트로 리다이렉트하려면 어떻게 해야 하나요? (0) | 2023.04.04 |
---|---|
리액트 컴포넌트의 DOM을 변환하는 JQuery 플러그인을 사용하고 있습니까? (0) | 2023.04.04 |
Oracle의 기본 날짜 형식은 YYY-MM-DD입니다. 이유는 무엇입니까? (0) | 2023.04.04 |
ng-repeat을 사용한 목록 페이지 번호 지정 (0) | 2023.04.04 |
오류 응답 Spring Boot에서 "message" 필드가 비어 있습니다. (0) | 2023.04.04 |