首页 > 编程语言 >04web安全学习---PHP表单验证

04web安全学习---PHP表单验证

时间:2023-06-03 16:01:33浏览次数:41  
标签:username PHP 登录 admin 04web 表单 --- 密码 password

04web安全学习---PHP表单验证_mysql

一、什么是表单?

04web安全学习---PHP表单验证_mysql_02

二、如何创建一个表单

表单的一个最简单的写法:

<form action="https://www.baidu.com/s">
<input name='wd' />
<input type='submit' />
</form>

04web安全学习---PHP表单验证_html_03

04web安全学习---PHP表单验证_html_04

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
	<form action="1.html" method="get">
		<input type="text" />普通文本框<br />
		<input type="password" />密码文本框<br />
		<input type="number" />数字文本框<br />
		<input type="file" />上传框<br />
		<input type="radio" name="dx"value="单选"/>单选框<br />
		<input type="checkbox" value="多选"/>多选<br />
		<input type="button" />按钮<br />
		<input type="submit" />提交<br />
		<input type="image" src="https://img0.baidu.com/it/u=4162443464,2854908495&fm=253&fmt=auto&app=138&f=JPEG?w=1000&h=800"/>图片提交按钮<br />
		<input type="reset" />重置<br />
		<select name="月">
			<option value=1>1月</option>
			<option value=2>2月</option>
			<option value=3>3月</option>
			<option value=4>4月</option>
			<option value=5>5月</option>
			<option value=6>6月</option>
			<option value=7>7月</option>
			<option value=8>8月</option>
			<option value=9>9月</option>
			<option value=10>10月</option>
			<option value=11>11月</option>
			<option value=12>12月</option>
			<option value=nf>nf月</option>
		</select><br />
		<textarea>留言板</textarea>
</body>
</html>

04web安全学习---PHP表单验证_html_05

三、PHP和数据库交互

04web安全学习---PHP表单验证_sql_06

例:

//比较简单的用户登录页面
<meta charset='GBK' />
<form><center>
	用户登录<br />
  账号: <input type='text' name='uname' /><br />
  密码: <input type='password' name='pwd'/><br />
  <input type='submit' value='登录'>
</form></center>
<?php
$username = $_REQUEST['uname'];
$password = $_REQUEST['pwd'];
?>

会出现一下报错,只需要在$username,$password前加上@符即可

04web安全学习---PHP表单验证_sql_07

代码修改为:

<meta charset='GBK' />
<form><center>
	用户登录<br />
  账号: <input type='text' name='uname' /><br />
  密码: <input type='password' name='pwd'/><br />
  <input type='submit' value='登录'>
</form></center>
<?php
@$username = $_REQUEST['uname'];//修改的在这里
@$password = $_REQUEST['pwd'];//修改的在这里
?>

效果如下:

04web安全学习---PHP表单验证_mysql_08

添加一个逻辑判断:

<meta charset='GBK' />
<form><center>
	用户登录<br />
  账号: <input type='text' name='uname' /><br />
  密码: <input type='password' name='pwd'/><br />
  <input type='submit' value='登录'>
</form></center>
<?php
@$username = $_REQUEST['uname'];
@$password = $_REQUEST['pwd'];
if(isset($_REQUEST['uname'])){  
if($username=='admin' and $password=='123456'){
	echo '登录成功';
}else{echo '账户密码错误';}}
?>

代码说明:isset()函数用来检测变量是否存在。

04web安全学习---PHP表单验证_html_09

效果如下:

当输入1231,132132的时候,提示密码错误,如下图:

04web安全学习---PHP表单验证_sql_10

当输入admin, 123456的时候,提示登录成功,如下图:

04web安全学习---PHP表单验证_sql_11

PHP连接数据库操作:

mysqli_connect(连接地址, 账户 ,密码, 库名);
mysqli_query(连接, 要执行的SQL语句);
mysqli_fetch_array()  //把对象变成数组
sql的两种写法,注意单双引号的区别:
1.$sql = "select * from admin where username='$username' and password='$password'";
2.$sql = 'select * from admin where username="'.$username.'" and password ="'.$password.'"';
<meta charset='GBK' />
<form><center>
	用户登录<br />
  账号: <input type='text' name='uname' /><br />
  密码: <input type='password' name='pwd'/><br />
  <input type='submit' value='登录'>
</form></center>
<?php
@$username = $_REQUEST['uname'];
@$password = $_REQUEST['pwd'];
if(@$_REQUEST['uname'] != '' and @$_REQUEST['pwd'] != ''){  
	$conn = mysqli_connect('127.0.0.1', 'root', 'root', 'test'); //数据库的连接
	$sql = 'select * from admin where username="'.$username.'" and password ="'.$password.'"';
	$b = mysqli_query($conn, $sql); //sql语句的执行
	$c = mysqli_fetch_array($b); //将数据库里的对象变为数组
  echo "你的密码是: ".$c['password'];  //获取数据
}else{echo '账户密码错误';}  
?>

效果如下:

04web安全学习---PHP表单验证_html_12

S

admin "or 1=1 -- qwe

select * from admin where username="admin" and password =""or 1=1 -- qwe"

04web安全学习---PHP表单验证_mysql_13

04web安全学习---PHP表单验证_sql_14

-- 空格 表示注释   # 是mysql特殊注释
SQL注入的原理:
		用户输入的数据被当做SQL代码执行
防御:
		检测传参内容,然后进行拦截。


标签:username,PHP,登录,admin,04web,表单,---,密码,password
From: https://blog.51cto.com/u_15388211/6408172

相关文章

  • Android-滑块验证View
    一个简单的滑块验证view。项目地址:https://gitee.com/819158327/sliderview。 ......
  • 【转】向分布式存储系统的迁移 - 使用 ZFS/Gluster
     原文: http://www.taodudu.cc/news/show-4208262.html?action=onClickhttps://my.oschina.net/u/2306127/blog/2865263------------------------------------------ 我这用的Ubuntu18.04系统(已经内置支持ZFS和Gluster文件系统了),原来磁盘存储使用的Ext4格式和LVM......
  • pygame-04加载人物图片与显示
    1-实例代码importmath,randomimportpygamefrompygameimportmixer#游戏初始化pygame.init()#窗口设置screen=pygame.display.set_mode((800,600))#背景设置background=pygame.image.load('background.png')#背景音乐,-1表示循环播放mixer.music.load(......
  • 大件货运系统源码,技术架构:spring boot、mybatis、redis、vue、element-ui
    网络货运平台源码网络货运平台的功能网络货运是指利用互联网平台,通过物流配送的方式进行商品销售和物流运输的一种新型商业模式。这种模式将传统的货运模式与互联网技术相结合,通过网络平台进行交易、物流配送和结算等一系列流程,从而实现货物的快速、高效、便捷地运输。技术架构:spr......
  • 2023-06-03 hexo+next主题之如何设置菜单图标
    注意是next主题找到你的博客\themes\hexo-theme-next里的_config.yml文件,搜索menu,如:menu:home:/||homeabout:/about/||usertags:/tags/||tagscategories:/categories/||tharchives:/archives/||archivealbum:/album/比如我现在创建了album(相册)菜单,......
  • pygame-03游戏界面等环境配置
    1-示例代码importmath,randomimportpygamefrompygameimportmixer#游戏初始化pygame.init()#窗口设置screen=pygame.display.set_mode((800,600))#背景设置background=pygame.image.load('background.png')#背景音乐,-1表示循环播放mixer.music.load(......
  • vue3 el-image图片资源的使用
    在项目中将img文件放到/src/assets/,相关组件文件配置:<el-imagesrc="../assets/hamburger.png"/>使用以上语句提示404错误。 查询网上资料才发现原来图片资源文件一般存放在/public目录下,将文件复制到/public目录下后404错误消失,图片显示正常。Remark。......
  • 树莓派如果通过 raspi-config 关闭桌面模式 All In One
    树莓派如果通过raspi-config关闭桌面模式AllInOne树莓派设置启动模式:切换桌面模式和命令行模式DesktopCommandLineGUIvsCLI图形化界面vs命令行$sudoraspi-config$sudovim/boot/config.txt$sudoreboot$sudoshutdwon-hnowautologinde......
  • 气相色谱质谱联用仪GCMS-QP2020性能和设计特点
    气相色谱质谱联用仪GCMS-QP2020的特点:集成高灵敏度和低实验成本:依托质谱技术,兼容多种载气类型(He,H2,N2),开拓质谱技术分析极限。无需更换离子源,轻松切换离子化方式。1)高灵敏度采用屏蔽板(Shield)技术的整体惰性化高灵敏度离子源和的“偏转透镜(ODlens)技术”配合“新型低噪音CPU板”,有效降......
  • OpenSSL-SM2
    在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务编译运行https://github.com/greendow/SM2-signature-creation-and-verification中的代码,提交运行结果与截图,(7‘)编译运行https://github.com/greendow/SM2-encrypt-and-decrypt中的代码提交运行结果与截图(8’)用Ope......