2010-04-02 2 views
0

json을 사용하여 브라우저와 Java 서버간에 데이터를 전달하고 있습니다.Java 서버에 json 입력을 암호화하십시오.

저는 Json-lib을 사용하여 java 개체와 json 사이를 변환합니다.

내가 susupicious보고 물건을 제거하고 싶습니다 (즉, "doSomethingNasty().) 사용자 입력에서 동안 자바에 JSON으로 변환

나는이 작업을 수행 할 수있는 여러 지점을 상상할 수

:.

  • 나는 원시 JSON 문자열을 검사하고 내가 자바 객체에 그것의 방법에 모든 JSON 값을 차단하는 방법을 볼 수 있었다 재미 보이는 물건
  • 을 제거하고, 거기에 재미있는 물건 볼 수 있었다.
  • 나는 내 새 jav를 횡단 할 수 있었다. json에서 재구성 한 직후의 오브젝트, 문자열 인 모든 필드를 찾고 거기서 스트립핑을합니다.

가장 좋은 방법은 무엇입니까? 이 작업을 위해 만들어진 기술이 있습니까? 이미 가지고있는 기술을 압니다.

+1

가장 어려운 부분은 정확히 '재밌는 것'을 구성하는 것입니다. –

+0

마치 JSON이 아니라 JSON! = Javascript 리터럴 인 _JAVASCRIPT_ 리터럴이 더 구조화 된 것 같습니다. 분명히 여기서 "우스운 이야기"가 무엇을 의미하는지 정의 할 필요가 있습니다. – StaxMan

+0

"Funny stuff"는 기본적으로 사용자 데이터가 아니라 자바 스크립트 기능을 의미합니다. 사용자가 적절한 개인 데이터 (이름, 주소 등) 만 제출한다는 것을 확인하고 악의적 인 사람이 사용자를 속여서 모든 종류의 악의에 사용할 수있는 자바 스크립트 기능을 제출하지 못하도록하고 싶습니다. – morgancodes

답변

1

접근 방식 3을 제안합니다. 도착한 즉시 재구성 된 Java 객체를 탐색하고 다른 논리가 동작 할 수 있기 전에 접근하십시오. 얻을 수있는 가장 제한적인 유효성 검사 (즉, 화이트리스트 작성)를 구축하십시오.

Json-lib에서 검색하는 객체 계층 구조를 깊이 우선 순회하면서이 작업을 수행 할 수 있습니다. 일반적으로 객체에 JSON 함수를 허용하고 싶지 않을 것이며 모든 값 (숫자, 문자열, 객체 트리의 깊이 등)이 예상 범위 내에 있는지 확인해야 할 것입니다. 예,이 작업을 수행하는 것은 번거롭지 만 좋은 사용자 입력 유효성 검사의 대안은 훨씬 더 심각합니다. 검증 코드의 가능한 버그를 진단하기 위해 로그를 추가 할 때마다 로그를 추가하는 것이 좋습니다.

0

애플리케이션으로 들어오는 JSON 데이터의 유효성을 검사해야한다는 것을 알고 있습니다. 화이트리스트 ("당신이 알고있는 데이터를 알고 있고 다른 것은 유효하지 않다")를 원한다면 자바 객체를 생성 한 후에 유효성을 검사하는 것이 좋습니다 ("java 객체를 DB 또는 유효성 검사가 끝나기 전에 어떤 식 으로든 UI로 돌아 간다.) 피할 위협 문자를 알고있는 문자 목록을 검정색으로 표시하려면 "유효성 검사"로 json 문자열을 직접 확인할 수 있습니다 일정 기간 동안별로 변하지 않을 것이고 실제로 그렇게하더라도 한 가지 일반적인 장소 만 개선하면됩니다. 목록 작성 중에 iot는 비즈니스 로직에 의존합니다.

관련 문제