加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – MYSQL二阶攻击问题

发布时间:2020-12-13 22:32:31 所属栏目:PHP教程 来源:网络整理
导读:现在我正在使用预处理语句,选择/插入数据到 mysql. 好我的问题我发现了二阶攻击. 因此,用户例如在我的网站上注册. 并使用像这样的电子邮件或用户名 "username '; DELETE Orders;--" 这会将插入到mysql表中 因此,当我通过预准备语句再次接收数据时,在准备好的
现在我正在使用预处理语句,选择/插入数据到 mysql.
好我的问题我发现了二阶攻击.
因此,用户例如在我的网站上注册.
并使用像这样的电子邮件或用户名

"username '; DELETE Orders;--"

这会将插入到mysql表中

因此,当我通过预准备语句再次接收数据时,在准备好的语句中再次插入/执行某些操作.

因为我使用准备好的陈述,我会安全吗?

样品:

Get Bad Data:

$sql = "SELECT * FROM USERS where USERID = 1";
...
$stmt->bind_result($username);
...

Next Query:
INSERT or do other things:
$SQL = "SELECT * FROM email WHERE USERNAME = ?";
....
$stmt->bind_param('s',$username);
...

我以为我会安全,如果我这样做的话?或者是否存在泄漏?

但如果我这样做,我会受到攻击:

$sql = "SELECT * FROM email WHERE username = $username";
$stmt = $mysqli->prepare($sql);
$stmt->execute();

谢谢 :-)

解决方法

只要占位符一直用于所有[变量]数据(无处不在!),那么所有SQL注入攻击*都会被阻止,二阶或其他.

这并不意味着没有漏洞或其他攻击媒介 – 但它确实意味着拥有“聪明用户名”的人将无法向数据库发送意外的“DROP”.正如所指出的那样,如果任何地方使用“不安全的SQL语句”那么,那么!保证是关闭的.

(“不安全的SQL语句”集包括但不限于任何不对所有[可变]数据使用占位符的此类语句.)

快乐的编码.

*这假设占位符支持/数据库驱动程序中没有错误/漏洞,当然.但那是另一个故事……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读