自建网站支付问题,网站建设在哪,网站建设项目步骤,网站后台文章排版目录
TP框架-开发-配置架构路由MVC模型
TP框架-安全-不安全写法版本过滤绕过
思维导图 PHP知识点 功能#xff1a;新闻列表#xff0c;会员中心#xff0c;资源下载#xff0c;留言版#xff0c;后台模块#xff0c;模版引用#xff0c;框架开发等 技…目录
TP框架-开发-配置架构路由MVC模型
TP框架-安全-不安全写法版本过滤绕过
思维导图 PHP知识点 功能新闻列表会员中心资源下载留言版后台模块模版引用框架开发等 技术输入输出超全局变量数据库操作逻辑架构包含上传下载删除; 技术JSCSS混用Cookie,Session操作MVC架构ThinkPHP引用等。 TP框架-开发-配置架构路由MVC模型 参考https://www.kancloud.cn/manual/thinkphp5_1 1、配置架构-导入使用 2、路由访问-URL访问 3、数据库操作-应用对象 4、文件上传操作-应用对象 5、前端页面渲染-MVC模型 配置架构-导入使用 修改小皮网址目录G:\develop\safety\phpstudy_pro\WWW\dome01\thinkphp\public 127.0.0.1成功访问 路由访问-URL访问 访问方式需要按照特定的访问方式才能访问到 官方的说法 框架中/thinkphp/public/index.php 当你输入127.0.0.1时就会访问application文件夹下 127.0.0.1 127.0.0.1/index.php/index/index index.php/thinkphp/public/index.php indexindex这个包 index:/index/index.php这个文件 如果想返回域名或表单中输入的参数中的内容 首先需要导入think\Controller类Controller类是ThinkPHP框架提供的基础控制器类你的Index类继承了这个控制器类。通过继承Controller**你可以使用框架提供的一些基础控制器功能比如处理请求和响应。其次完成代码回写 ?php
namespace app\index\controller;
**use think\Controller;**class Index extends Controller
{// index方法用于处理首页请求public function index(){// 返回一个包含样式和内容的字符串return style typetext/css*{ padding: 0; margin: 0; } .think_default_text{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: Century Gothic,Microsoft yahei; color: #333;font-size:18px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }/stylediv stylepadding: 24px 48px; h1:)/h1p ThinkPHP V5br/span stylefont-size:30px十年磨一剑 - 为API开发设计的高性能框架/span/pspan stylefont-size:22px;[ V5.0 版本由 a hrefhttp://www.qiniu.com targetqiniu七牛云/a 独家赞助发布 ]/span/divscript typetext/javascript srchttp://tajs.qq.com/stats?sId9347272 charsetUTF-8/scriptscript typetext/javascript srchttp://ad.topthink.com/Public/static/client.js/scriptthinkad idad_bd568ce7058a1091/thinkad;}**// xi方法用于处理名为xi的请求返回请求参数中的namepublic function xi(){// 返回请求参数中的namereturn $this-request-param(name);}**
}访问有两种方式 192.168.137.1:84/index.php/Index/index/xi/name/xiaosedi 192.168.137.1:84/index.php/Index/index/xi?namewusuowei 如果是使用php自带的请求方式访问则只支持一种方式回写数据 192.168.137.1:84/index.php/Index/index/xi?x123456 如果创建新的目录例如application→text→controller→Test.php等 数据库操作-应用对象 数据库配置文件 引用数据的的类use think\Db;使用数据库的查询语句 use think\Db;
public function testsql(){//SELECT * FROM think_user WHERE id 1 LIMIT 1// table方法必须指定完整的数据表名$data Db::table(news)-where(id, 1)-findOrFail();return json($data);}开启调试设置会在浏览器打印出错误信息 thinkphp的安全过滤 如果是原生态php的话数据库操作没有过滤就会受到SQL注入攻击ThinkPHP框架提供了一些内置的数据库操作方法使得对数据库的访问更加便捷和安全使用ThinkPHP框架操作数据库 默认是受到框架内置的过滤保护 public function testsql(){//SELECT * FROM think_user WHERE id 1 LIMIT 1//使用TP框架操作数据库 默认是受到框架内置的过滤保护$id request()-param(x);$data Db::table(news)-where(id, $id)-find();return json($data);}文件上传操作-应用对象 在配置好的网址根目录public下创建upload.html 在upload.html中写入以下代码并修改action的地址 form action/index.php/test/test/upload enctypemultipart/form-data methodpostinput typefile nameimage / brinput typesubmit value上传 /
/form 在Test.php中输入以下代码此代码对于上传文件进行了诸多过滤保证了安全性 public function upload(){// 获取表单上传文件例如上传了001.jpg$file request()-file(image);// 移动到框架应用根目录/uploads/ 目录下$info $file-validate([extjpg,png,gif])-move(../uploads);if($info){// 成功上传后获取上传信息// 输出文件扩展名例如 jpgecho $info-getExtension();echo br;// 输出文件保存路径例如 20160820/42a79759f284b767dfcb2a0197904287.jpgecho $info-getSaveName();echo br;// 输出文件名例如 42a79759f284b767dfcb2a0197904287.jpgecho $info-getFilename();} else {// 上传失败获取错误信息echo $file-getError();}
}前端页面渲染-MVC模型 在例如index需要渲染的文件当前并行目录下→view→index→index.html等 http://192.168.137.1:84/index.php/Index/index/index 输入对应的路由访问即可看到以及渲染的页面 也可以指定内容可以指定模板 public function index(){**//可以一一赋值$this-assign(name,ThinkPHP);$this-assign(email,thinkphpqq.com);//可以批量赋值$this-assign([name ThinkPHP,email thinkphpqq.com]);//模板输出return $this-fetch(index/edit);}TP框架-安全-不安全写法版本过滤绕过 1、内置代码写法原生写法 例子不合规的代码写法-TP5-自写 2、框架版本安全框架漏洞 例子1写法内置安全绕过-TP5-SQL注入 例子2内置版本安全漏洞-TP5-代码执行 判断漏洞的方式首先判断代码写法如果是不安全写法直接通过代码回写使用sql注入如果是安全写法则判断中间框架版本号依据版本号去寻找存在的漏洞 内置代码写法原生写法 例子不合规的代码写法-TP5-自写 1、使用TP框架操作数据库 默认是受到框架内置过滤保护 2、原生态的数据库操作如果没有过滤就会受到SQL注入攻击 安全写法推荐写法 不安全写法原生写法不会受到保护 安全写法 规矩写法不是绝对安全 看两点 看版本的内置绕过漏洞 同样也有漏洞 $idrequest()-param(x);
$dataDb::table(news)-where(id,$id)-find();用一半安全写法用一半安全写法 有安全隐患 //用一半安全写法 有安全隐患$idrequest()-param(x);$dataDb::query(select * from news where id$id);纯原生写法(完全不是用TP语法) // 从GET请求中获取id参数如果不存在则默认为1
$id $_GET[id] ?? 1;// 构建SQL查询语句
$sql select * from news where id$id;
echo $sql;// 执行查询并获取结果集
$data mysqli_query($con, $sql);// 使用mysqli_fetch_row遍历结果集的每一行
while ($row mysqli_fetch_row($data)) {// 从结果集中获取每一列的值并存储到相应的变量中$page_title $row[1];$heading $row[2];$subheading $row[3];$content $row[4];$item $row[5];
}框架版本安全框架漏洞 首先查看中间框架的版本是什么如ThinkPHP的版本在thinkphp→thinkphp→tpl→base.php中查看 依据版本号去查找出现过的漏洞进行复现即可没有绝对的安全 思维导图