python sql注入如何防止_Python中防止sql注入的方法详解

前言中每个人都应该知道SQL是一个web漏洞了。无论哪种语言是用于web的后端开发,只要你使用关系数据库,您可能会遇到SQL注入攻击。sql注入是怎么出现在Python web开发的过程,以及如何解决这个问题?当然,其他语言我不想讨论如何避免SQL注入。有多种方法来防止注入PHP(博主注:据说是世界上最困难的语言)。Python的方法实际上是相似的。在这里我举个例子。漏洞的最常见原因是字符串拼接。当然,SQL注入不仅仅是拼接。也有许多类型,比如宽字节注入,特殊字符转义,等等,这是最常见的字符串拼接,初级程序员也是最常见的错误。首先,让我们定义一个类来处理mysql数据库操作类:aurl = \有这个类的问题吗?

这个类是有缺陷的,它很容易导致SQL注入,让我们来谈谈为什么SQL注入发生。为了验证的真实性问题,这是一个方法调用该方法在上面的类中,如果出现错误,直接将抛出一个异常。def test_query (articleurl): mysql数据库=()尝试:querySql = \显然,传入的参数articleurl是可控的。如果你想执行注入测试,你只需要添加单引号后articleurl价值。SQL注入测试可以执行。不多说,必须有注入漏洞。再次运行脚本,查看结果(1064年,\u201C你有一个错误在您的SQL语法;检查手册对应MariaDB服务器版本正确的语法使用\u201C\u201D在1号线\u201D附近)呼应一个错误,一个熟悉的错误,在这里我通过的测试参数是'Let谈论导致注入另一种情况。

它看起来不像很像预编译的sql ?这样的写作方式防止SQL注入吗?测试它,你就会知道,回声如下(1064年,\u201C你有一个错误在您的SQL语法;检查手册对应MariaDB服务器版本正确的语法使用\u201C\u201D在1号线\u201D附近)及以上测试结果是相同的,所以这种方法不是工作,这种方法并不是一个预编译的SQL语句,所以能做些什么来防止SQL注入呢?解决两个解第一个解决方案是包括在许多anti-injection PHP方法,逃跑或过滤特殊字符。第二个解决方案是使用内部方法,类似于PHP PDO。在这里您可以修改上述数据库类。修改后的代码类数据库:aurl = \光标=()(查询、参数)返回()def __del__(自我):(),当执行执行,传入两个参数,第一个是参数化SQL语句,第二个是相应的实际参数值,函数将处理传入的参数值相应的防止SQL注入、实际的方法如下preUpdateSql =\u201C更新文章设置标题= %年代,日期= % s,后半期= % s id = % s\u201D(preUpdateSql,[标题、日期、内容、援助])这可以防止SQL注入。

总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值