后台文章管理改版并修复两处安全问题
- 文章管理:按标题搜索、按状态和来源(内容系统/手动添加)筛选,显示发布时间和最后修改时间;一键上线/下线、查看前台页面、单篇删除和批量删除;右侧抽屉编辑标题、正文、分类、标签、作者、发布时间和状态;来自内容系统的文章提示再次发布会覆盖修改 - 其他内容类型的列表增加删除按钮 - 删除文章时同时删除它的发布记录,内容系统可以重新发布同一篇文章 - 上线时如果没有发布时间就用当前时间;后台表单的发布时间转换成 MySQL 格式 - 安全:/api/contents、/api/entities、/api/relationships、/api/joins 的新增、修改、删除需要登录管理后台(读取仍然公开,前台不受影响) - 安全:列表接口的 orderBy 参数只接受字段名和 ASC/DESC,修复 SQL 注入 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+3
-2
@@ -1,3 +1,4 @@
|
||||
const { safeOrderBy } = require('../utils/sqlSafety');
|
||||
const { getDb } = require('../config/database');
|
||||
const Content = require('./Content');
|
||||
|
||||
@@ -145,8 +146,8 @@ class Page extends Content {
|
||||
params.push(...Object.values(options.where));
|
||||
}
|
||||
|
||||
if (options.orderBy) {
|
||||
query += ` ORDER BY ${options.orderBy}`;
|
||||
if (safeOrderBy(options.orderBy)) {
|
||||
query += ` ORDER BY ${safeOrderBy(options.orderBy)}`;
|
||||
}
|
||||
|
||||
if (options.limit) {
|
||||
|
||||
Reference in New Issue
Block a user