web开发安全 php+html+js && 初级留言框架 && 前端和数据库的联动 && 初级 ...

打印 上一主题 下一主题

主题 831|帖子 831|积分 2493

前言 

告急是通过开发者的角度去相识相应的安全题目。学习的目的就是相识一下早期留言框的安全题目。
 开发环境    

  用到  vscode(必要设置php   html  环境)     或者使用phpstorm   DW 
留言板的功能:  用户写入数据 到我们开发的网页   ------  数据经过我们的php代码 进行相干数据库的交互 --------  数据库内容回显  ------- php -------提示我们留言成功等信息
HWML  创建一个交互型表单

【DW 2021】Adobe Dreamweaver 2021 软件安装包及安装教程          dw
直接进入DW

数据库列的导入 

我们要交互就得有相应的数据库  和  数据库表单
Navicat Premium 16 
https://mp.weixin.qq.com/s/ZruHjvEU5gfn7iCJtD671w
 
PhpStudy Pro
https://www.xp.cn/
把上边两个设置好之后  使用navicat

数据库设置好之后  我们打开 VScode
html的环境设置就是直接 下载拓展就行
php必要先把小皮面版的 php开发环境 写到环境变量 path
然后再下载拓展  php sever
php与数据库的交互

要想和数据库交互就得 先链接上

这边要是想判断 毗连成功没也可以写上
  1. if(mysqli_connect($dbip,$dbuser,$dbpasswd,$dbname))
  2.    { echo   "<script>alert('连接成功')</script>" }  //这边还有个知识就是代码的混编  因为php内是不允许任何前端其他语言的加入(但是html  js 语言中都能加入  php) 所以想弹个窗就得混编到 输出语句里
  3. else
  4.     {echo  "<script>alert('连接失败')</script>"}    // 这里有个单引号双引号的区别   就是有字符串的时候就得用双引号(原因就是单引号不易识别字符串)   这里汉字的话建议就是用  ''  用"" 容易报错
复制代码
  1. //或者利用msqli_connect_errno($con)
  2. if (!$con))
  3. {
  4.     echo "连接 MySQL 失败: " . mysqli_connect_error();   //返回错误数据
  5. }
复制代码

着实每次有数据库的交互都可以进行判断一下  有没有交互成功
毗连上之后我们就得把写入的用户数据  传输到数据库 
这个时候我们就可以界说一下参数  后续方便传参(指的是把用户数据以参数的情势进行传第的)

把ht的数据先化参数
$u=@$_POST['username'];    //@是进行函数的规整     post就是我们上边说的methd=post  一post的方式进行数据传输 
$c=@$_POST['content'];
界说完之后 我们的sql字段还写了ip  和ua 头这就 必要用特点的一下php语句进行操作了(获取IP  和ua头)
https://www.runoob.com/php/php-ref-mysqli.html
这个用到    $i=$_SEVER['REMOTE_ADDR']     //获取ip                                   //这里涉及一个[]   ()的使用一般php里()就是用来包含参数($xxx)等信息的    [ ]是包含char
$ua=$_SEVER['HTTP_USER_AGENT']    //获取  ua头
传完参数之后  我们就是可以进行交互了(交互是最后和数据表的)
mysqli_query($con,"SELECT *  FROM gbook");    //看看数据表 和表内的字段是否存在
mysqli_query($con,"INSERT INTO gbook (username, content, IPaddress, uagent)
VALUES ('$u','$c','$i','$ua')");    //由于用户输入内容是插入到 数据库的 
这个之后着实可以判断一下  数据内容是否插入成功 
执行一下   再看一下数据库毗连 就会有数据进入 
 
数据内容回显

数据回显就是我们查询数据然后利用语句进行捕获 然后把捕获的 数据
这个就是先   $sql="select * from gbook" 界说数据库查询语句
这里可以看看上边mysqli_fetch_row的使用   $result=mysqli_query($con,$sql)先执行
while ($row=mysqli_fetch_row($result))
    {
        // printf ("%s : %s",$row[0],$row[1]);
        echo "<br>";
        echo '<hr>';
 
        echo '用户名:'.$row[0].'<br>';    //$row[0]就是从结果中取出 下标为0 的元素 好比查询的内容为  111  222  333     那么roe[0] 就是111
        echo '内容:'.$row[1].'<br>';
        echo 'ip'.$row[2].'<br>';
        echo 'ua头'.$row[3].'<br>';
 
    }

运行一下看看是否回显   还有个本领就是  如果我们执行错误了  可以把$result 输出出来看看内容
 
背景的设置  我们知道一般网页都是有个管理体系背景去快捷管理 其他php  但是由于快捷性管理就是涉及到了 函数的使用(function)

 
那就开始界说函数把界说起来吧     先界说一个添加函数


界说一个展示函数  我们把函数界说了之后是不会给我们执行的  这个必要我们的调用 


这边我们为了区分背景 直接就是在背景设置一个专属高权限  删除数据的权限
怎么界说呢  我们可以先界说个删除键   再赋予删除键参数 进行数据库的delete功能

那有些小伙伴可能说   你妹的啊 不是   $del=='del'才能显示吗   你怎么不赋值啊
这个的话直接看

我们这里是不能给这个用户网页删除键的  这个就是为了区别  用户网页和管理页

那我们就试一试吧   换客户端 输入数据  数据进入了数据库

删除

插件的应用


这个就是插件   | 使用:


  

 
然后就是安全题目

1、就是我们用的这个插件的安全   :由于这个东西不是我们写的,所有这个可以去网上搜搜源码看看有没有什么漏洞
2、XSS 漏洞   <script>alert('xxs')</script>  注入一下但是 这个两个框都是有过滤的   (数据库过滤 和 插件过滤)
3、就是未授权访问   (由于我这个背景php是没有设置验证cookie的所以 我们可以直接登上)

总结就是以这个开发为例引出安全题目
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表