From 5e60ec56a031766ff76e4ef2960a810b954ad892 Mon Sep 17 00:00:00 2001 From: lc6464 <64722907+lc6464@users.noreply.github.com> Date: Thu, 22 Jul 2021 13:28:37 +0800 Subject: [PATCH] =?UTF-8?q?SQL=20=E6=B3=A8=E5=85=A5=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=81=E6=9B=B4=E6=96=B0=E6=8F=90=E7=A4=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=81=E5=93=8D=E5=BA=94=E5=A4=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 +++++-- README.md | 30 ++++++++++-------------------- Update.md | 9 +++++++++ api.php | 32 ++++++++++++++++---------------- functions.php | 3 ++- index.php | 4 ++-- install.php | 9 ++++----- install/config_raw | 4 ++-- settings.php | 6 +++--- updater.php | 18 ++++++++++++++++++ 10 files changed, 71 insertions(+), 51 deletions(-) create mode 100644 updater.php diff --git a/.gitignore b/.gitignore index 2d276ff9..8fd772c0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,10 @@ -# 配置文件 -config.php +# 配置文件等 .vscode/ +config.php update.json +config/ +cache/ +update/ # 用户文件 notice.html diff --git a/README.md b/README.md index 9e912a73..16692b8c 100644 --- a/README.md +++ b/README.md @@ -64,24 +64,14 @@ PanDownload 网页复刻版,PHP 语言版
在**SVIP账号**中可设置**SVIP账号**的**BDUSS**和**STOKEN**,添加账号后记得进入**会员账号切换模式**将模式改成**顺序模式**或**轮换模式**。
## 📦New Changes -- 当前版本: `2.1.9` -- 更新日期:2021-07-14 +- 当前版本: `2.1.9.1` +- 更新日期:2021-07-22 - 修改内容: - - 新增功能 - - 下载链接生成二维码 #123 - - 自动检查更新 - - 功能优化 - - 在跟随浏览器模式下,颜色模式随浏览器设置实时更新 - - 优化颜色模式逻辑 - - 优化用户设置页面前端逻辑 - - 优化二维码生成 - - 优化样式表加载 - - 优化 JS 逻辑和加载 - - 错误修复 - - 修复了正则表达式有误导致的子域名无法正常使用 Aira2 下载问题 #137 - - 其它 - - 更新 .gitignore - - 格式化代码 + - 安全性更新 + - 修复 API SQL 注入问题 #148 + - 问题修复 + - 修复 `install` 和 `settings` 页面更新提示有误的问题 + - 修复 `install` 写入 HTTP 响应正文后仍写入响应头的 bug(取消了自动跳转功能) [查看更多](Update.md) @@ -98,15 +88,15 @@ PanDownload 网页复刻版,PHP 语言版
- Telegram: - [@yuantuo666](https://t.me/yuantuo666) - [Telegram频道](https://t.me/baiduwp_php) -- 协作者:LC @lc6464 +- 合作者:LC @lc6464 - [个人网站](https://lcwebsite.cn/ "LC的网站") - [联系](https://lcwebsite.cn/web/contact.aspx "联系 LC") **作者及合作者都是学生,因未来一段时间课余时间很少,对此项目维护将会减少。** #130
如果遇到问题请先 **仔细阅读此文档** 、查看[视频教程](https://www.bilibili.com/video/BV1N5411A77n) - 以及 [以前的议题](https://github.com/yuantuo666/baiduwp-php/issues)
+以及查看[以前的议题](https://github.com/yuantuo666/baiduwp-php/issues)
-如果是**设置账号的 Cookies(BDUSS 和 STOKEN)配置环境**相关的问题,请尽可能自行解决![Google](https://www.google.com/ "谷歌") [Bing](https://cn.bing.com/ "必应")
+如果是**设置账号的 Cookies(BDUSS 和 STOKEN)**及**配置环境**等方面的问题,请尽可能自行解决![Google](https://www.google.com/ "谷歌") [Bing](https://cn.bing.com/ "必应")
## 🔔Thanks diff --git a/Update.md b/Update.md index 035a55d6..0802def1 100644 --- a/Update.md +++ b/Update.md @@ -1,4 +1,13 @@ # Update +### `2.1.9.1` 版本: +- 更新日期:2021-07-22 +- 修改内容: + - 安全性更新 + - 修复 API SQL 注入问题 #148 + - 问题修复 + - 修复 `install` 和 `settings` 页面更新提示有误的问题 + - 修复 `install` 写入 HTTP 响应正文后仍写入响应头的 bug(取消了自动跳转功能) + ### `2.1.9` 版本: - 更新日期:2021-07-14 - 修改内容: diff --git a/api.php b/api.php index e8c447e1..c8e0202c 100644 --- a/api.php +++ b/api.php @@ -67,9 +67,9 @@ break; case "singleBDUSS": // 先处理是否有新增加数据 - $BDUSS = (!empty($_POST["BDUSS"])) ? trim($_POST["BDUSS"]) : ""; - $STOKEN = (!empty($_POST["STOKEN"])) ? $_POST["STOKEN"] : ""; - $name = (!empty($_POST["name"])) ? $_POST["name"] : ""; + $BDUSS = htmlspecialchars((!empty($_POST["BDUSS"])) ? trim($_POST["BDUSS"]) : "", ENT_QUOTES); + $STOKEN = htmlspecialchars((!empty($_POST["STOKEN"])) ? $_POST["STOKEN"] : "", ENT_QUOTES); + $name = htmlspecialchars((!empty($_POST["name"])) ? $_POST["name"] : "", ENT_QUOTES); if ($BDUSS != "" and strlen($BDUSS) == 192) { // 开始录入 $add_time = date("Y-m-d H:i:s"); @@ -86,7 +86,7 @@ break; case "multiBDUSS": $BDUSS = (!empty($_POST["MULTI_BDUSS"])) ? trim($_POST["MULTI_BDUSS"]) : ""; - $name = (!empty($_POST["name"])) ? $_POST["name"] : ""; + $name = htmlspecialchars((!empty($_POST["name"])) ? $_POST["name"] : "", ENT_QUOTES); if ($BDUSS != "") { // 开始录入 $allsql = ""; @@ -94,7 +94,7 @@ $AllBduss = explode("\n", $BDUSS); for ($i = 0; $i < count($AllBduss); $i++) { - $sql = "INSERT INTO `" . $dbtable . "_svip`( `name`, `svip_bduss`, `add_time`, `state`, `is_using`) VALUES ('$name-" . ($i + 1) . "','" . $AllBduss[$i] . "','$add_time',1,'');"; + $sql = "INSERT INTO `" . $dbtable . "_svip`( `name`, `svip_bduss`, `add_time`, `state`, `is_using`) VALUES ('$name-" . ($i + 1) . "','" . htmlspecialchars($AllBduss[$i], ENT_QUOTES) . "','$add_time',1,'');"; $allsql .= $sql; } @@ -112,7 +112,7 @@ } else EchoInfo(-1, array("msg" => "添加失败", "detail" => "请检查BDUSS是否填写正确")); break; case "SvipSettingFirstAccount": - $id = (!empty($_GET["id"])) ? $_GET["id"] : ""; + $id = htmlspecialchars((!empty($_GET["id"])) ? $_GET["id"] : "", ENT_QUOTES); if ($id == "") { // 参数错误 EchoInfo(-1, array("msg" => "传入参数错误")); @@ -132,7 +132,7 @@ } break; case "SvipSettingNormalAccount": - $id = (!empty($_GET["id"])) ? $_GET["id"] : ""; + $id = htmlspecialchars((!empty($_GET["id"])) ? $_GET["id"] : "", ENT_QUOTES); if ($id == "") { // 参数错误 EchoInfo(-1, array("msg" => "传入参数错误")); @@ -154,9 +154,9 @@ echo GetIPTablePage($page); break; case "NewIp": - $ip = (!empty($_POST["ip"])) ? trim($_POST["ip"]) : ""; - $remark = (!empty($_POST["remark"])) ? $_POST["remark"] : ""; - $type = $_POST["type"]; + $ip = htmlspecialchars((!empty($_POST["ip"])) ? trim($_POST["ip"]) : "", ENT_QUOTES); + $remark = htmlspecialchars((!empty($_POST["remark"])) ? $_POST["remark"] : "", ENT_QUOTES); + $type = htmlspecialchars($_POST["type"], ENT_QUOTES); if ($ip != "") { // 开始录入 $add_time = date("Y-m-d H:i:s"); @@ -188,7 +188,7 @@ case "DeleteById": //通过指定表格与ip删除对应行 $Type = (!empty($_GET["type"])) ? $_GET["type"] : ""; - $Id = (!empty($_GET["id"])) ? $_GET["id"] : ""; + $Id = htmlspecialchars((!empty($_GET["id"])) ? $_GET["id"] : "", ENT_QUOTES); if ($Type != "" and $Id != "") { // 开始执行 // 生成SQL @@ -294,11 +294,11 @@ break; case "CheckMySQLConnect": // 检查数据库连接是否正常 - $servername = (!empty($_POST["servername"])) ? $_POST["servername"] : ""; - $username = (!empty($_POST["username"])) ? $_POST["username"] : ""; - $DBPassword = (!empty($_POST["DBPassword"])) ? $_POST["DBPassword"] : ""; - $dbname = (!empty($_POST["dbname"])) ? $_POST["dbname"] : ""; - $dbtable = (!empty($_POST["dbtable"])) ? $_POST["dbtable"] : ""; + $servername = htmlspecialchars((!empty($_POST["servername"])) ? $_POST["servername"] : "", ENT_QUOTES); + $username = htmlspecialchars((!empty($_POST["username"])) ? $_POST["username"] : "", ENT_QUOTES); + $DBPassword = htmlspecialchars((!empty($_POST["DBPassword"])) ? $_POST["DBPassword"] : "", ENT_QUOTES); + $dbname = htmlspecialchars((!empty($_POST["dbname"])) ? $_POST["dbname"] : "", ENT_QUOTES); + $dbtable = htmlspecialchars((!empty($_POST["dbtable"])) ? $_POST["dbtable"] : "", ENT_QUOTES); if (!function_exists('mysqli_connect')) { EchoInfo(-2, array("msg" => "
您未安装或未启用 mysqli 扩展,
不能使用数据库功能。
请自行关闭数据库功能。")); } diff --git a/functions.php b/functions.php index f1676df4..8b4a799f 100644 --- a/functions.php +++ b/functions.php @@ -377,12 +377,13 @@ function EchoInfo(int $error, array $Result) } function GetAnalyseTablePage(string $page) { + $page = (int)$page; if ($page <= 0) exit; $EachPageNum = 10; $conn = $GLOBALS['conn']; $dbtable = $GLOBALS['dbtable']; $AllRow = ""; - $StartNum = ((int)$page - 1) * $EachPageNum; + $StartNum = ($page - 1) * $EachPageNum; $sql = "SELECT * FROM `$dbtable` ORDER BY `ptime` DESC LIMIT $StartNum,$EachPageNum"; $mysql_query = mysqli_query($conn, $sql); while ($Result = mysqli_fetch_assoc($mysql_query)) { diff --git a/index.php b/index.php index 57888edc..a1f0ea89 100644 --- a/index.php +++ b/index.php @@ -9,14 +9,14 @@ * * 此项目 GitHub 地址:https://github.com/yuantuo666/baiduwp-php * - * @version 2.1.9 + * @version 2.1.9.1 * * @author Yuan_Tuo * @link https://imwcr.cn/ * @link https://space.bilibili.com/88197958 * */ -$programVersion_Index = "2.1.9"; +$programVersion_Index = "2.1.9.1"; session_start(); define('init', true); if (version_compare(PHP_VERSION, '7.0.0', '<')) { diff --git a/install.php b/install.php index 8bddacce..91fc55cb 100644 --- a/install.php +++ b/install.php @@ -103,15 +103,15 @@ const div = document.createElement('div'); div.id = 'CheckUpdate'; div.style.margin = '0.3rem 1rem'; - div.innerHTML = `Baiduwp-PHP 项目有新的版本:${data.version}(当前版本为${data.now_version})!请联系站长更新!   - 发行版页面   下载程序文件`; + div.innerHTML = `Baiduwp-PHP 项目有新的版本:${data.version}(${data.isPreRelease ? '此版本为预发行版本,' : ''}当前版本为${data.now_version})!请联系站长更新! +   发行版页面   下载程序文件`; document.body.insertAdjacentElement('beforeBegin', div); } } else if (data.code === 2) { const div = document.createElement('div'); div.id = 'CheckUpdate'; div.style.margin = '0.3rem 1rem'; - div.innerHTML = `Baiduwp-PHP 项目有新的版本:${data.version}(${data.isPreRelease ? '此版本为预发行版本,' : ''}当前版本为${data.now_version})!请联系站长更新! + div.innerHTML = `Baiduwp-PHP 项目版本异常!当前版本:${data.now_version},项目最新版本为:${data.version}${data.isPreRelease ? '(预发行版本)' : ''}!   发行版页面   下载程序文件`; document.body.insertAdjacentElement('beforeBegin', div); } else if (data.code === 1) { @@ -683,8 +683,7 @@ function CheckForm() { } else { die("写入 config.php 文件失败,请检查 config.php 文件状态及当前用户权限。"); } - header('Refresh: 5;url=./'); - echo "恭喜你!安装成功了~
浏览器将会在5s内自动跳转,若没有跳转可点此链接前往主页查看。"; + echo "恭喜你!安装成功了~
点此链接前往主页查看。"; } ?> diff --git a/install/config_raw b/install/config_raw index 4c1bd8a8..e62dbf3d 100644 --- a/install/config_raw +++ b/install/config_raw @@ -3,12 +3,12 @@ * PanDownload 网页复刻版,PHP 语言版配置文件 * !!!请勿修改本文件,如果手动修改后再在后台设置,可能导致config.php文件被清空!!! * - * @version 2.1.9 + * @version 2.1.9.1 * @author Yuan_Tuo * @link https://imwcr.cn/ * @link https://space.bilibili.com/88197958 */ -const programVersion = '2.1.9'; +const programVersion = '2.1.9.1'; if (!defined('init')) { http_response_code(403); header('Content-Type: text/plain; charset=utf-8'); header('Refresh: 3;url=./'); die("HTTP 403 禁止访问!\r\n此文件是 PanDownload 网页复刻版 PHP 语言版项目版本 " . programVersion . " 的配置文件!\r\n禁止直接访问!"); diff --git a/settings.php b/settings.php index f1df20b3..2a31fe3c 100644 --- a/settings.php +++ b/settings.php @@ -117,15 +117,15 @@ const div = document.createElement('div'); div.id = 'CheckUpdate'; div.style.margin = '0.3rem 1rem'; - div.innerHTML = `Baiduwp-PHP 项目有新的版本:${data.version}(当前版本为${data.now_version})!请联系站长更新!   - 发行版页面   下载程序文件`; + div.innerHTML = `Baiduwp-PHP 项目有新的版本:${data.version}(${data.isPreRelease ? '此版本为预发行版本,' : ''}当前版本为${data.now_version})!请联系站长更新! +   发行版页面   下载程序文件`; document.body.insertAdjacentElement('beforeBegin', div); } } else if (data.code === 2) { const div = document.createElement('div'); div.id = 'CheckUpdate'; div.style.margin = '0.3rem 1rem'; - div.innerHTML = `Baiduwp-PHP 项目有新的版本:${data.version}(${data.isPreRelease ? '此版本为预发行版本,' : ''}当前版本为${data.now_version})!请联系站长更新! + div.innerHTML = `Baiduwp-PHP 项目版本异常!当前版本:${data.now_version},项目最新版本为:${data.version}${data.isPreRelease ? '(预发行版本)' : ''}!   发行版页面   下载程序文件`; document.body.insertAdjacentElement('beforeBegin', div); } else if (data.code === 1) { diff --git a/updater.php b/updater.php new file mode 100644 index 00000000..2172dd7c --- /dev/null +++ b/updater.php @@ -0,0 +1,18 @@ + + * @link https://imwcr.cn/ + * @link https://space.bilibili.com/88197958 + * + */ + +$programVersion_Updater = "2.1.9.1";