From 23875f9146a2008a55fe6ecac80b81b34ee9687f Mon Sep 17 00:00:00 2001 From: KBLonay Date: Sun, 7 Jan 2024 14:23:15 +0800 Subject: [PATCH] chore: add danger of xss --- zh-CN/guide/basic/command.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/zh-CN/guide/basic/command.md b/zh-CN/guide/basic/command.md index 4c38ead31ad3..d8241f20e93c 100644 --- a/zh-CN/guide/basic/command.md +++ b/zh-CN/guide/basic/command.md @@ -25,6 +25,12 @@ ctx.command('echo ') 这种链式的结构能够让我们非常方便地定义和扩展指令。稍后我们将看到这两个函数的更多用法,以及更多指令相关的函数。 +::: danger +在插件中动态引用来自用户输入的[消息元素](./element.html)是非常危险的,因为它很容易导致 [XSS 攻击](https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC)。**绝不要**直接将用户提供的内容作为插值并返回 + +在默认情况下,Koishi 会对用户输入内容(例如上述的 `message` 参数)进行转义以确保其安全性。但是使用了例如解码内容方式会导致输入内容绕过了 Koishi 的转义,如需必要,请控制并过滤(escpae)来自用户的内容 +::: + ## 定义参数 正如你在上面所见的那样,使用 `ctx.command(decl)` 方法可以定义一个指令,其中 `decl` 是一个字符串,包含了 **指令名** 和 **参数列表**。