欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > WEB安全--SQL注入--预防SQL注入的一些方法

WEB安全--SQL注入--预防SQL注入的一些方法

2025/3/21 19:47:05 来源:https://blog.csdn.net/m0_74800552/article/details/146322098  浏览:    关键词:WEB安全--SQL注入--预防SQL注入的一些方法

一、使用预编译查询

        将 SQL 语句和用户输入的数据分离,数据库不会将输入内容解析为代码。

        如PHP的PDO、JAVA的PreparedStatement,先用?占位,再将输入的字符当做参数填充到查询语句中;这一过程将输入的内容视为了字符串,无法通过单引号、注释符等逃逸出来,所以返回的查询结果只有两种true、false。

        PDO(PHP):

        - - 之前的文章详细讲过,这里不再赘述。

        PreparedStatement(Java):

# Python (使用 psycopg2 示例)
cursor.execute("SELECT * FROM users WHERE username = %s AND password = %s", (user, pwd))

        psycopg2(Python):

// Java (使用 PreparedStatement)
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, user);
stmt.setString(2, pwd);

二、对用户输入过滤

        这个方式就比较好想到,在前端或后端代码中人为地写一些waf来处理前端接收到的内容。在对本身业务没有太大影响的前提下可以通过正则表达式过滤一些危险的字符(' -- # /**/ ())、函数(outfile()、updatexml())和关键字(select、where)等等。 

同时也可以根据当时的场景设置一些黑名单或白名单(如只允许哪些字符)来排除不必要的隐患。

三、用户最小权限

        最小权限原则是一种安全性原则,指的是为了保护敏感数据和系统资源,用户应该被授予最小必需的权限。这意味着用户只能访问和执行他们工作所需的数据库对象和操作,而不是拥有对整个数据库的完全访问权限。
        使用最小权限原则可以减少潜在的安全风险和数据泄露的可能性。通过限制用户的权限,可以防止他们对数据库中的敏感数据进行未经授权的访问、修改或删除;如load_file()、into outfile等函数必须要root权限才能使用。

四、使用ORM框架

        ORM(对象关系映射)框架是一种将对象模型和关系数据库之间进行映射的技术。它允许开发人员使用面向对象的方式操作数据库,而不需要编写繁琐的SQL语句。ORM框架将数据库表映射为对象,将表的行映射为对象的属性,将表之间的关系映射为对象之间的关联。
        ORM框架的优点包括提高开发效率、减少代码量、简化数据库操作、提供对象级别的查询和持久化等。常见的Java ORM框架包括Hibernate(Java)、Django ORM(Python)、MyBatis和Spring Data JPA等。使用这种方式替代拼接查询,有效避免SQL注入。

五、禁止错误回显

        禁用错误回显,避免暴露数据库信息。

        关闭数据库错误回显,避免泄露表名、字段名;如:

PHP:display_errors = Off

Java:配置自定义错误页面(web.xml)

六、安全框架

Spring Security(Java):内置 CSRF、SQL 注入防护。

Helmet(Node.js):设置安全的 HTTP 头。

七、 使用防火墙、IPS、IDS

        将它们部署在资产中,负责代理检测用户输入的流量和输出流量,能有效的识别危险语句和数据,并拦截流量封锁源IP。

        市面上的安全公司所推出的产品有很多,如深信服的AI赋能防火墙、长亭科技的雷池waf、360安全云等。

八、重视数据库密码和登录

        定期修改数据库管理员的密码,并且密码强度一定要高;如果没有特殊的业务或工作需求,禁止管理员远程登录数据库。

        

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词