데이터베이스에 Java 문자열 풀 입력을 방지해야하는 몇 가지 중요한 필드가 있습니다. 데이터베이스의 VARCHAR은 모두 VARCHAR이며, 코드에서 StringBuilders를 사용하여 상수 풀에 넣지 않도록합니다.mybatis varchar가 java의 문자열 풀에 들어가는 것을 방지하려면 어떻게해야합니까?
우리는 데이터베이스와 상호 작용하기 위해 MyBatis를 사용하며 현재 setObject를 사용하여 StringBuilder를 Varchar에 매핑하려고 시도하는 타입 핸들러를 구현하려고합니다.
만약 가능하다면 MyBatis와 JDBC 사이에 다른 영역이 생겨서 String 풀에서 끝나지 않는 VARCHAR이 보장되지 않는다는 것을 알고 싶습니다.
나는뿐만 아니라 MyBatis로 사용자 구글 그룹에 질문을했지만 지금까지 아무도이
편집을 도울 수 없었다 (캐스트는 코드에서, 문, 문자열로 그런 종류의를 예정) - 이것은 문자열 풀에 대한 것이 아니라 데이터가 힙에있는 곳을 제어하고 가능한 한 빨리 null을 덮어 쓰는 방식으로 변경 가능한 CharSequence의 데이터를 지우는 것에 관한 것임을 분명히해야합니다. 문자열은 절대적으로 풀에 들어갈 수 없지만 단순히 풀에없는 문자열을 null로 설정하면 가비지 수집이 작동하는 방식으로 인해 보안 문제가 발생할 수 있습니다.
String입니다. 그래서 나는 당신이 이것에 대해 걱정해야한다고 생각하지 않습니다. – talex
모범 사례에 따르면 문자열이 힙에 있는지 확인하고 가능한 한 빨리 덮어 쓰도록해야합니다. 즉, 상수 풀에없는 경우에도 즉시 덮어 쓰지 않는 참조가있는 경우에도 힙 덤프가 있으면 문제가 발생합니다 생성됩니다. null로 설정되어있는 경우 가비지 콜렉션이 작동하는 방식으로 인해 여전히 존재할 수 있습니다. – SMC
이 경우 데이터를 간단하게 덮어 쓸 수 있기 때문에'char []'을 사용하는 것이 더 좋습니다. 그리고 나는 그런 높은 보안 수준으로 일하지 않기 때문에 조금 질투합니다. – talex