构建可靠解决方案以避免 SQL 注入
1. 理解 SQL 注入
在数据交互过程中,确保系统输入无法在未经授权的情况下改变查询,从而获取完全不同的值和输出是至关重要的。想象一下,在工作场景中,只有经理能访问同部门同事的数据,而不是整个公司的数据。你肯定不希望任何人获取你的薪水、账户可用资金或其他敏感数据。
SQL 注入是开发者让用户从输入获取值,然后将该值直接以字符串格式连接到查询中所导致的危险后果。用户可能会添加额外的命令或条件来扩展 SQL 查询,而不是提供所需的值。编译并执行这些代码后,用户就可以访问不适当或敏感的数据,甚至能够修改数据库、授予新权限等。
SQL 注入是目前最常用的黑客技术之一,它将恶意代码嵌入 SQL 查询中,不仅会让用户获取不当或敏感数据,还可能更改对象、状态或参数的值,甚至破坏数据库或导致数据丢失。常见的注入技术大多基于添加始终为真的条件(如 1=1),从而生成包含敏感数据的整个数据集。如果执行联合操作合并结果集,还可以操纵其他结构和数据库表中的数据。
以下通过一个雇佣合同的示例来深入理解 SQL 注入问题:
1.1 数据模型
数据模型包含两个表,分别处理个人数据、雇佣合同特征以及薪资管理。为了简化,所有数据将合并到一个公共视图 V_EMP 中,该视图包含员工标识符( Employee_id )、名字( Name )、姓氏( Surname )、职位( Position )、当前薪水( Salary ),以及两个日
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



