1

我有一个看起来像这样的链接:

www.localsite.dev/posts/332635955335419755

效果很好,我可以看到 ID = 332635955335419755 的帖子

但是当我尝试将它的一些文本添加到更漂亮的 URL 的 URL 时......如果 Codeigniter 有一些特殊字符,它将向我显示 404 页面错误......实际上它不会发生,除非你尝试 XSS 或等等它...... .我没有得到XSS'ed或这样只是抛出一个404页面错误,如果我在ID之后删除文本它会正常工作......

www.localsite.dev/posts/332635955335419755/<SCRIPT SRC=http://ha.ckers.org/xss.js></SCRIPT>

那么如果蛞蝓有这些字符,我如何确保不会出现 404 错误?

4

2 回答 2

1

您的问题实际上并不是如何防止 404,而是关于如何制作安全的 url slug。

查看用户指南中的以下页面,您可以使用xss_clean()和/或sanitize_filename()从字符串中删除危险字符。您可能希望在将数据插入数据库之前或创建 slug 时执行此操作。

还有方法url_title()但我不确定如何处理 xss 字符串。理想情况下,您会结合使用所有三种方法 - 测试一下。

完成此操作后,您可能仍然需要更改$config['permitted_uri_chars']以允许这两种安全方法允许通过,但至少它应该更安全。

于 2012-04-28T16:13:33.740 回答
0

config.php 中的更改

  $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';

  $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-<>/';

但是——你真的真的不想那样做——它会让你面临巨大的安全问题。您应该重新考虑解决问题的方法。我建议您在文本中使用 flash_message,甚至 _POST。使用 URL 来处理这类文本只会导致问题和错误……

于 2012-04-28T12:06:49.423 回答