2016-11-25 1 views
0

나는 morphia 1.0.1에서 1.2.1로 업그레이드하는 데 어려움을 겪고 있습니다. 1.0.1에서 우리는 equals()와 다른 호출에 대한 morphia 호출을 오버라이드 시켜서 가져 오는 값이 null 인 경우 예외를 throw해야했습니다. 이렇게하면 예외없이 호출이 실행될 경우 값이 null 인 데이터베이스의 첫 번째 레코드가 선택되는 보안 취약점을 방지 할 수 있습니다.morphia 1.2.1 업그레이드 - FieldEndImpl이 현재 비공개입니다.

이렇게하기 위해 Guice 모듈에서 morphia.createDatastore()를 오버라이드하여 특별한 맞춤 데이터 저장소를 반환합니다. 특수 데이터 저장소는 Query.field() 호출이 호출 될 때 특수 FieldEnd를 반환하는 특수 Query 객체를 반환했습니다. 이 FieldEnd는 예외 검사를 수행했습니다.

그러나 우리의 특별한 NotAllowingNullsFieldEnd 클래스는 FieldEndImpl을 확장했는데 이제 1.2.1에서는 비공개이므로 문제가 있습니다.

쿼리가 1.2.1 세계에서 유효한 인수로 null을 허용하지 못하도록하는 방법이 필요합니다.

하나의 해결 방법은 NotAllowingNullsFieldEnd를 FieldEndImpl이 (org.mongodb.morphia.query)에있는 동일한 패키지로 이동하는 것입니다.하지만 이는 실제로 해킹 된 것 같습니다.

나는 변모 전문가가 아니기 때문에 실제로 나는 모든 전문가의 의견을 환영합니다.

참고로이 구현은 내 시간 전에 수행되었으므로이 경로가 선택된 이유에 대한 심층적 인 이유를 추가하지 않아도됩니다. 이제 막 업그레이드를 수행하라는 요청을 받았습니다. .

답변

0

모르 피아 1.3.2 클래스 FieldEndImplpublic으로 돌아갑니다.