Advertisement

探讨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)

还没有任何评论哟~