在php中,我们经常见到这样的语句

if(isset($_GET['id']))
{
$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp); // connectivity $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

但是这样的sql语句,会造成一种叫做万能密码登录的漏洞。这种漏洞在用户登录的时候,不用进行知道密码,只需要知道用户名就可以。比如用户名是admin' or '1'='1 密码为空。这样就能使得用户的账号直接被登录了。

对比在Pythonh中的sql执行语句

 user = User.query.filter(User.password == password , User.telephone == telephone).first()

python中的语句也是这样同样是用户密码在数据库中进行对比,怎么两个执行的结果还不一样?

这里我导入的一个sqlalchemy库,这个库封装的非常好,把那些可疑的字符全部都进行过滤了。用sqlalchemy里面的sql语句,就可以避免所谓的万能密码登录了

看来学习Python还是挺好的呀

2019-08-01

最新文章

  1. 分布式中使用Redis实现Session共享(二)
  2. HDU 5875 Function (2016年大连网络赛 H 线段树+gcd)
  3. CyclicBarrier、CountDownLatch与Semaphore的小记
  4. 验证dictionary重复键
  5. 秒杀多线程第八篇 经典线程同步 信号量Semaphore
  6. 从Hadoop骨架MapReduce在海量数据处理模式(包括淘宝技术架构)
  7. libsvm工具箱C++编程实践2
  8. 06、NetCore2.0依赖注入(DI)之整合Autofac
  9. java将对象转map,map转对象工具类
  10. nodejs-POST数据处理
  11. truffle init 从零开始创建简单DApp项目
  12. java中long类型的比较
  13. Django框架的使用教程--视图和路由[二]
  14. Docker for Windows 代理设置(linux container)
  15. C# 尝试读取或写入受保护的内存。这通常指示其他内存已损坏
  16. bundle adjustment 玩具程序
  17. spring学习十九 常用注解
  18. TED_Topic7:How we unearthed the spinosaurus
  19. bzoj千题计划139:bzoj2229: [Zjoi2011]最小割
  20. java 调整jvm堆大小上限

热门文章

  1. Git操作:远程仓库(git remote)的添加、管理和删除
  2. IP/TCP/UDP checsum
  3. 磁盘构造/msdos分区(fdisk)格式化(mkfs)和挂载
  4. 关于JPA一对一,一对多(多对一),多对多的详解
  5. 带你入门Camtasia Studio录像机软件
  6. Android应用测试指南
  7. 开始使用 java8 的日期工具类
  8. iOS 默认Cell选中
  9. Redis设计与实现一之简单的动态字符串
  10. Windows下创建指定大小的文件