第27天:安全开发-PHP应用&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞

第二十七天

Untitled

一、TP框架-开发-路由访问&数据库&文件上传&MVC模型

1.TP框架-开发-配置架构&路由&MVC模型

参考:https://www.kancloud.cn/manual/thinkphp5_1

  1. 配置架构-导入使用
  2. 路由访问-URL访问
  3. 数据库操作-应用对象
  4. 文件上传操作-应用对象
  5. 前端页面渲染-MVC模型

二、TP框架-安全-不合规写法&内置过滤绕过&版本安全漏洞

1.TP框架-安全-不安全写法&版本过滤绕过

1.内置代码写法

不合要求的代码写法-ThinkPHP5-自写

2.框架版本安全
  1. 写法内置安全绕过-ThinkPHP5-SQL注入
  2. 内置版本安全漏洞-ThinkPHP5-代码执行
  3. 如果该版本有漏洞,即使使用了安全的写法那也有漏洞
  4. 看版本漏洞,版本如果内置绕过漏洞,同样也有漏洞

**逻辑越权原理:**在设计数据库的时候,仅仅使用UID来限制用户权限的等级,这种设计可以通过抓包的方法来修改UID的值获得更高的权限。


三、环境复现

1.安全写法

虽然写法安全,但是版本有漏洞,则依旧存在漏洞

$id=request()->param('x');
$data=Db::table('news')->where('id',$id)->find();

2.半安全写法

同样具有安全隐患

//用一半安全写法 有安全隐患
   $id=request()->param('x');
   $data=Db::query("select * from news where id=$id");

3.原生写法

// 从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];
}
  • 15
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值