探讨SQL攻击防御策略
发布时间
阅读量:
阅读量
sql语句预编译
例如:
String sql = "select id, no from user where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeQuery();
通过使用PreparedStatement进行处理后,在预处理阶段,SQL引擎会对查询语句进行语法分析并生成语法树结构。随后会根据预编译好的执行计划生成相应的优化后的执行策略,并对后续输入的参数进行严格的控制以防止潜在的安全漏洞。这种方法不仅能够提高程序运行效率还能有效防御常见的SQL注入攻击行为。
介绍一下另一个预编译工具PDO,在这里我可以推荐几篇相关的文章供进一步了解。简单来说就是大致原理与之前的方法相似。它通过将执行语句与变量进行分离处理,并对变量分别进行绑定操作来实现参数传递的独立性管理。这样可以有效防止SQL注入攻击。不过具体实现细节较为复杂。
预编译方法就最有效!!也是如今市场上最流行的方式了
检查变量数据类型和格式
例如:
$uid=checkuid($uid); //检测$uid是不是数字类型,不是不继续往下运行
$sql =
全部评论 (0)
还没有任何评论哟~
