万能用户名和万能密码

匿名 (未验证) 提交于 2019-12-02 23:04:42

万能用户名


联合查询,是查询的结果大于1,为真

万能用户名防御
PDO

$username=$REQUEST['usernm']; $password=$_REQUEST['passwd']; $pdo=new PDO("mssql:host=127.0.0.1;dbname=users","sa","root"); $sql="select * from users where username=? and password=?"; $statment=$pdo->prepare($sql); $statment->execute(array($username,$password)); $res=$statment->fetch(); if(!empty($res)){ header("location:success.php"); } else{ header("location:failure.php"); } 

解释:
给PDO这个类赋值,赋给pdo这个对象
sql数据库中的查询语句赋值给$sql
pdo这个对象使用方法prepare() 给sql语句固定一个模式
为 prepare 方法准备要执行的SQL语句,SQL语句可以包含零个或多个命名(:name)或问号(?)参数标记,参数在SQL执行时会被替换。
你不能在 SQL 语句中同时包含命名(:name)或问号(?)参数标记,只能选择其中一种风格。
预处理 SQL 语句中的参数在使prepare方法时会传递真实的参数。

通过execute将数组array输入

execute()方法负责执行准备好的查询
该方法需要有每次迭代执行中替换输入的参数。可以通过两种方法实现:作为数组将值传递给方法
Statment->来获取结果
empty()函数是用来测试变量是否已经配置。
若变量已存在、非空字符串或者非零,则返回 false 值;反之返回 true值。
所以,当字符串的值为0时,也返回true,就是执行empty内部的语句。这就是陷阱。
如: 假设 value=0;empty(value = 0; 则empty(value)=false。

千万注意使用empty()函数。
判断字符串是否为空,可以这么判断: if ($value=="") …
* 格式:bool empty ( mixed var )
* 功能:检查一个变量是否为空
* 返回值:
* 若变量不存在则返回 TRUE
* 若变量存在且其值为""、0、“0”、NULL、、FALSE、 array()、var $var; 以及没有任何属性的对象,则返回 TURE
* 若变量存在且值不为""、0、“0”、NULL、、FALSE、 array()、var $var; 以及没有任何属性的对象,则返回 FALSE
* 版本:PHP 3, PHP 4, PHP 5

万能密码

any’ or 1='1
万能密码防护代码

<?php $username=$_GET['usernm']; $password=$_GET['passwd']; $conn=mysql_connect("127.0.0.1","root","123456"); if(!$conn){ exit(" connet failure</br>");} mysql_select_db("mysql",$conn) or exit("DB shibai</br>"); $sql="select password from user where user='$username'"; $res=mysql_query($sql,$conn) or exit ("DB shibai</br>"); if($obj=mysql_fetch_object($res)){ 	if($obj->password==$password){ 	echo("chenggong"); 	} 	else{ 	echo("mimabugui"); 	} }else{ echo("yonghuimingbnudui");} ?> 
文章来源: https://blog.csdn.net/qq_43623470/article/details/86289434
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!