网站注入问题解决办法(并不一定是最完美的)

本文介绍了一种使用存储过程来防止SQL注入攻击的方法,并通过具体示例展示了如何避免潜在的安全风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网页上,通过某个用户输入数据,以获取其相关数据的行为,实质上是网页调用后台SQL语句(关系型数据库)的过程,难免会遇到这样的情况

理想的情况是这样的:

mysql> desc eg;
+--------+----------+------+-----+---------+----------------+
| Field  | Type     | Null | Key | Default | Extra          |
+--------+----------+------+-----+---------+----------------+
| id     | int(10)  | NO   | PRI | NULL    | auto_increment |
| name   | char(10) | YES  |     | NULL    |                |
| scores | int(10)  | YES  |     | NULL    |                |
+--------+----------+------+-----+---------+----------------+
3 rows in set (0.00 sec)


mysql> select * from eg where id=1;
+----+------+--------+
| id | name | scores |
+----+------+--------+
|  1 | a    |     20 |
+----+------+--------+
1 row in set (0.00 sec)

但是,很可能出现这样的情况

mysql> select * from eg where id=1 or 'a' = 'a';
+----+------+--------+
| id | name | scores |
+----+------+--------+
|  1 | a    |     20 |
|  2 | b    |     30 |
|  3 | c    |     50 |
|  4 | d    |     70 |
+----+------+--------+
4 rows in set (0.00 sec)

上面这种情况就是网站注入。

我采用的办法是创建procedure来解决这个问题

mysql> create procedure so(a_id INT(10))
    -> begin
    -> select * from eg where id = a_id;
    -> end //

再次执行查询语句

mysql> call sos(1 or 'a'='a');
+----+------+--------+
| id | name | scores |
+----+------+--------+
|  1 | a    |     20 |
+----+------+--------+
1 row in set (0.00 sec)

就可以解决网站注入问题啦。


这是我自己想到的方法,可能会有很多纰漏,希望大家能够指正大笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值