防止SQL注入(Java)
作者:互联网
我想保护我的应用程序免受SQL Injection攻击.
第一个问题:更好的方法是什么?
第一种方法:我将每个请求都转换为json:
public JsonObject requestToJson(HttpServletRequest request) throws UnsupportedEncodingException{
request.setCharacterEncoding("UTF-8");
StringBuffer jb = new StringBuffer();
String line = null;
try {
BufferedReader reader = request.getReader();
while ((line = reader.readLine()) != null)
jb.append(line);
} catch (Exception e) { /*report an error*/ }
return new JsonParser().parse(jb.toString()).getAsJsonObject();
}
如果是最好的方法,请在这里阻止它,然后第二个问题:在这里如何做?
第二种方法:可以通过Hibernate级别完成.第二个问题:该怎么做?
解决方法:
感谢此用户:Elliott Frisch.他在评论中回答.
像这样的JPARepository已经被禁止进行SQL注入:
public interface UserRepository extends JpaRepository<User, Integer> {
User findByPhoneNumber(String phoneNumber);
}
只需要防止使用HQL:
String query1 = "select * from MyBean where id = "+ id;
String query2 = "select * from MyBean where id = :id";
第二个,将被保护.
感谢大家.
标签:hibernate,sql-injection,spring,java 来源: https://codeday.me/bug/20191119/2036043.html