php – SQL注入保护

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – SQL注入保护脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我以为我会对我认为基本上消除sql注入的可能性的选项有所了解(我认为).

目前,我有我的管理员帐户,这显然让我完全掌握了数据库(更改,删除等).我有一个PHP使用的帐户只能访问SELECT,UPDATE,DELETE,INSERT.如何为每个操作设置一个用户,然后只是在MysqL_query语句中引用连接ID – 现在显然这会给服务器带来更大的压力,基本上必须进行4个连接,但是如果它的安全性是重要的是,在我看来,这将是一个有效的选项,通过将命令限制为您想要在这种情况下执行的EXACT函数.有关此选项可行性的任何想法?

更新:正如我之前没有提到的那样,这不会是阻止sql注入,MysqL_real_escaPE_string(),预备语句等的唯一障碍.但我只是想,如果有些人如何,所有这些都失败了,不会这样至少限制他们可以做的伤害? (例如,在注册表单上,他们将无法选择哈希值或删除条目).

这不是sql注入的全部内容.每次使用SQL查询中尚未清理的参数时,都会使数据库处于打开状态,这可能不一定会破坏数据.它也可能是窃取数据或获取未经授权的访问.

考虑一个非常受限制的帐户,它可以做的就是SELECT.您编写了一个身份验证查询

$sql = "SELECT COUNT(*) AS count
          From users 
         WHERE user_id='{$_POST['user']}' AND pass='{$_POST['password'}'";

// check if returns a count of 1,if yes,LOG in

使用正常输入,您希望查询看起来像:

SELECT COUNT(*) AS count
  From users 
 WHERE user_id = 'username' AND pass='********'

如果用户名和传递匹配,则应该返回1作为计数.现在,攻击者尝试以管理员身份登录.由于您尚未清理输入,因此将$_POST [‘user’]发送为:admin’; – .整个查询变为:

SELECT COUNT(*) AS count
  FROM users 
 WHERE user_id = 'admin'; -- AND pass='********'

之后的所有内容都是注释,因此忽略了其他条件并返回1.你去了,你刚刚授予恶意用户管理员权限.这就是一些真正的攻击的执行方式.您从低权限帐户开始,通过安全漏洞尝试获取更多权限.

长话短说,具有受限制权限的应用程序范围的帐户(例如:没有DROP,ALTER等)是好的.永远不要给任何人或任何应用程序更多的权限.但要sql注入,请使用prepared statements.

脚本宝典总结

以上是脚本宝典为你收集整理的php – SQL注入保护全部内容,希望文章能够帮你解决php – SQL注入保护所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。