0

我在应用程序中使用 codeigniter。有一个表格。在 textarea 元素中,我写了一些内容,包括

%Features%

但是,当我想通过 $this->input->post(key) 来回显它时,我会得到类似 �atures%

'%Fe' 消失了。

在 CI 的主 index.php 文件中,我试过var_dump($_POST)了,我看到上面的词是完全可以的。但是当我使用输入库(xss 过滤打开)获取它时,我遇到了问题。

当 XSS 过滤关闭时,它最初看起来没问题。但是,如果我将它存储在数据库中并下次显示,我会看到同样的问题(即使 xss 过滤已关闭)。

4

2 回答 2

1

%Fe碰巧看起来像一个 URL 编码的序列%FE,代表字符 254。它正在被 Unicode “我不知道那个序列是什么意思”字形,�。

很明显,在提交时解码字段时,“XSS 过滤器”过于热心了。

当您从数据库输出结果时,URL 解码也很可能在该过程稍后的某个时间点再次运行。检查数据库以确保正确表示实际字符串。

于 2011-03-21T18:37:35.443 回答
1

首先:在将变量存储到 db 之前转义变量。% 在 SQL 中有特殊的含义。

第二: % 在 URL 中也有特殊含义,例如。%20 是 %FE 将映射到将由 input() 解码的某个字符

于 2011-03-21T18:38:19.547 回答