Java安全编程指南

SQL注入防范

SQL注入指利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的攻击方法。Java程序存在SQL注入问题,能通过使用PreparedStatement类来阻止SQL注入。
一段可能产生SQL注入的代码如下:

String user = request.getParameter("username");
String pass = request.getParameter("password");
String query = "SELECT id FROM users WHERE username="+user+" AND
password="+pass;
Statement stmt = con.createStatement(query);
ResultSet rs = con.executeQuery(query);
if (rs.next())
{
// 登录成功
int id = rs.getInt(1);
...
}
else
{
// 登录失败
...
}

正确的做法如下:

String user = request.getParameter("username");
String pass = request.getParameter("password");
String query = "SELECT id FROM users WHERE username=? AND password=?";
PreparedStatement stmt = con.prepareStatement(query);
stmt.setString(1, user);
stmt.setString(2, pass);
ResultSet rs = stmt.executeQuery();
if (rs.next())
{
// 登录成功
int id = rs.getInt(1);
...
}
else
{
// 登录失败
...
}

跨站脚本攻击防范

跨站脚本漏洞本质是 Html 的注入问题,恶意用户的输入没有经过严格的控制并最终显示给来访的用户,导致能在来访用户的浏览器里以浏览用户的身份执行Html代码,数据流程如下:
恶意用户的Html输入—>web程序—>数据存储—>web程序—>用户浏览器。
Html代码的示例:

你可能感兴趣的:(Java安全编程指南)