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";