2014-12-19 4 views
0

서버 측에서 JSON (ESAPI 인코더 사용)을 인코딩했습니다. 그러면 클라이언트는 빈 필드를 검색하고 추가 처리를 수행합니다. x22Company \의 X22 \ x7B \ x22name \ X22 \ x3A \ x22Sameer \ X22 \ x22company \ X22 \ x3A \ 서버 측ESAPI 인코더를 사용하여 JSON 인코딩

JSONBean bean=new JSONBean(); 
//populate the bean 
Gson gson=new Gson(); 
String jsonString = gson.toJson(bean); 
String JSEscapedStr=ESAPI.encoder().encodeForJavaScript(jsonString); 
response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
response.getWriter().write(JSEscapedStr); 

인코딩 JSON 문자열

에서

\ x22designation \ X22 \ x3A \ x22Developer \ X22 \ x7D

나는 또한 response.se를 사용하여 시도

var JSONObj=JSON.parse(data); 
    var name=JSONObj["name"]; 
    var company=JSONObj["company"]; 
    var designation=JSONObj["designation"]; 
    //process these variable in javascript 

클라이언트 측에

tContentType ("plain/text"); 또한 서버 측에서도 작동하지 않습니다.

오류

구문 에러 : JSON.parse : 1 호선 열심히 코드 JSON 문자열은 다음이

를 작동하면 콘텐츠 형식이 "일반/텍스트"

인 JSON 데이터의 열 1에서 예상치 못한 문자

  var jsonEncoded="\x7B\x22name\x22\x3A\x22Sameer\x22,\x22company\x22\x3A\x22Company\x22,\x22designation\x22\x3A\x22Developer\x22\x7D"; 
      var JSONObj=JSON.parse(jsonEncoded); 
      console.log(JSONObj); 
      var name=JSONObj["name"]; 
      var company=JSONObj["company"]; 
      var designation=JSONObj["designation"]; 
      console.log(name); 
      console.log(company); 
      console.log(designation); 
+0

Firefox의 TamperData 확장과 같은 프록시 도구를 구하거나 OWASP의 ZAP 도구 사본을 구해서 서버의 응답을 트랩하고 여기에 추가하십시오. – avgvstvs

+0

질문에 답변 한 경우 답변을 게시하거나 요청 된 정보를 친절하게 제공하십시오. – avgvstvs

답변

0
  1. 당신은뿐만 아니라 전체 JSON 트리 (이미 BEI GSON 자체를 수행해야합니다) 페이로드를 인코딩해야한다.
  2. ESAPI.encoder().encodeForJavaScript은 JavaScript-Methods/Functions에 대한 매개 변수 또는 함수 인수를 인코딩하도록 설계되었습니다.
+0

그러나 encodeForJavaScript는 유효성 검사기에서 마음에 들지 않는 \ x2F와 같은 이스케이프 문자를 생성했으며 JSON 문자열에서는 유효하지 않다고 생각합니다. Java에서와 같이 \ u002F 여야합니다. 이것은 나를 위해 encodeForJavaScript를 사용할 수 없게 만듭니다. 이 문제를 어떻게 극복 할 수 있습니까? – marc82ch