自学内容网 自学内容网

第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];
}

原文地址:https://blog.csdn.net/weixin_48613011/article/details/138171147

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!