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语句”集包括但不限于任何不对所有[可变]数据使用占位符的此类语句.) 快乐的编码. *这假设占位符支持/数据库驱动程序中没有错误/漏洞,当然.但那是另一个故事…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |