문제

저는 다양한 Java en JSP 기반 애플리케이션으로 구성된 대규모 레거시 코드베이스를 사용하는 고객을 위해 일하고 있습니다.

대부분의 쿼리는 홈 빌드 'orm' 시스템을 사용하여 수행됩니다.일부 애플리케이션은 Plain Old JDBC를 사용합니다.일부 애플리케이션은 Hibernate를 기반으로 합니다(예, 더하기 기호를 사용한 HQL 빌드도 잠재적인 문제입니다).이전 애플리케이션 중 일부는 완전히 JSP로 작성되었습니다.

저는 몇 가지 SQL 주입 버그를 수동으로 발견했습니다.하지만 실제로는 일종의 도구를 사용하여 잠재적인 약점을 검색할 수 있습니다.

어떤 아이디어가 있나요?

도움이 되었습니까?

해결책

나는 추천하고 싶다 버그 찾기 (Eclipse 플러그인도 있습니다) 이러한 문제와 더 많은 문제를 추적할 수 있습니다.

우리는 그것을 직장에서 사용하고 있는데, 그것은 빠르고 돈의 가치가 있습니다(무료처럼).우리는 그 도움으로 몇 가지 일반적인 문제를 해결했습니다.

다른 팁

저는 몇 가지 검색어를 작성하거나 preparedStatement 대신 java.sql.Statement 사용을 찾는 IDE를 로드했습니다.

귀하의 URL 공간은 얼마나 큽니까?가능하다면 HTTP GET 및 POST 요청을 통해 SQL 주입을 시도하는 것이 가장 좋습니다.소스/바이트 코드 검사를 통해 발견할 수 있는 몇 가지 문제가 있지만 애플리케이션이 어떤 종류의 잠재적으로 악의적인 입력을 허용하는지 확실히 알 수 있는 유일한 방법은 HTTP 요청을 사용하는 것입니다.

CAL9000 URL 세트가 작은 경우 좋은 SQL 주입/교차 사이트 스크립팅 테스트 도구입니다.

잘못 처리된 악의적인 입력을 탐지하는 데 진지한 회사는 침투 테스트를 수행하기 위해 제3자를 고용할 것입니다. 화이트햇 보안 과거에 함께 일한 적이 있어 추천할 수 있는 공급업체입니다.우리는 이를 1억 달러 이상의 전자상거래 웹사이트에 사용했습니다.(저는 White Hat과 아무런 관련이 없으며 귀하가 White Hat의 고객이 되어도 어떤 혜택도 누릴 수 없습니다.)

코드의 모든 테스트/강화는 제쳐두고 다음과 같이 HTTP 방화벽을 설치하는 것이 매우 좋습니다. 모드_보안.

제가 "현지화가 필요하지 않은" 애플리케이션의 현지화 작업을 할 때 집에서 만든 도구를 사용하여 컴파일된 코드(.NET의 IL, Java의 바이트 코드와 동일)를 분석했습니다.

SQL 명령으로 문자열 매개변수가 있는 DB(일반적으로 CRUD 작업)와 작동하는 지정된 메서드를 호출하고 문자열 인스턴스를 추적하여 연결을 확인할 수 있습니다.

문자열을 디컴파일하고 추적하기 위해 .NET Reflector를 사용했습니다.하지만 Java에 비슷한 도구를 사용할 수 있는지는 모르겠습니다.

치료보다는 예방을 위해 갈 수 있습니다.UI 바로 아래에 위생 처리 레이어를 추가하면 사용자 입력에 SQL/스크립트가 포함되지 않습니다.Java에는 예제가 있어야 합니다. CakePHP에서 이러한 접근 방식을 본 적이 있습니다.

사용하지 않는 곳을 찾아보세요 PreparedStatement.

CAL9000을 추천합니다.다음 링크에서 자세한 내용을 확인할 수 있습니다.

CAL9000

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top