python中的万能密码

在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库,这个库封装的非常好。把那些可疑的字符全部都进行过滤了。这样就实现不了所谓的万能密码登录了

在php里面我们经常见到假如php对sql原生语句不进行过滤的话,就会造成万能密码登录

2019-08-01

猜你喜欢

转载自www.cnblogs.com/Triangle-security/p/11277110.html