第二十七天
一、TP框架-开发-路由访问&数据库&文件上传&MVC模型
1.TP框架-开发-配置架构&路由&MVC模型
参考:https://www.kancloud.cn/manual/thinkphp5_1
- 配置架构-导入使用
- 路由访问-URL访问
- 数据库操作-应用对象
- 文件上传操作-应用对象
- 前端页面渲染-MVC模型
二、TP框架-安全-不合规写法&内置过滤绕过&版本安全漏洞
1.TP框架-安全-不安全写法&版本过滤绕过
1.内置代码写法
不合要求的代码写法-ThinkPHP5-自写
2.框架版本安全
- 写法内置安全绕过-ThinkPHP5-SQL注入
- 内置版本安全漏洞-ThinkPHP5-代码执行
- 如果该版本有漏洞,即使使用了安全的写法那也有漏洞
- 看版本漏洞,版本如果内置绕过漏洞,同样也有漏洞
**逻辑越权原理:**在设计数据库的时候,仅仅使用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];
}