계: Input Validation and Representation

입력 검증 및 표현 문제는 메타 문자, 대체 인코딩 및 숫자 표현 때문에 발생합니다. 보안 문제는 입력을 신뢰하기 때문에 발생합니다. 문제로는 "Buffer Overflows", "Cross-Site Scripting" 공격, "SQL Injection", 그 외 여러 가지가 있습니다.

JSON Path Manipulation

Abstract
이 응용 프로그램은 신뢰할 수 없는 데이터가 포함된 JSON 쿼리를 수행합니다. 따라서 공격자가 JSON 문서의 예기치 않은 부분을 쿼리하는 것이 가능할 수 있습니다.
Explanation
"JSON Path"는 개발자가 XPath를 사용하여 XML 문서를 쿼리하는 것과 유사한 방법으로 JSON 문서를 쿼리할 수 있도록 합니다. 쿼리를 조합하는 데 사용되는 키를 사용자가 임의로 선택할 수 있게 되면 사용자가 문서의 예기치 않은 다른 부분을 쿼리할 수 있으므로 개인 데이터 또는 민감한 데이터에 액세스할 수 있게 됩니다.

예제 1: 다음 코드는 사용자가 정의한 키워드를 사용하여 이름 및 주소 같은 공개 사용자 세부 정보가 포함된 JSON 문서에 액세스합니다. 그러나 이 JSON 문서에는 사용자 암호 같은 개인 정보도 포함되어 있습니다.


def searchUserDetails(key:String) = Action.async { implicit request =>
val user_json = getUserDataFor(user)
val value = (user_json \ key).get.as[String]
...
}
key는 사용자가 제어할 수 있으므로 악의적인 사용자가 이 점을 활용하면 사용자의 암호와 JSON 문서에 포함될 수 있는 다른 모든 개인 정보에 액세스할 수 있습니다.
desc.dataflow.scala.json_path_manipulation