codeigniter url标题特殊字符错误

时间:2012-04-28 11:51:30

标签: php codeigniter url special-characters

我的链接看起来像这样:

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>

那么如果slug有这些字符,怎么能确保不会出现404错误?

2 个答案:

答案 0 :(得分:1)

你的问题不是如何防止404,而是关于如何制作安全的网址。

查看following page from the user guide,您可以使用xss_clean()和/或sanitize_filename()从字符串中删除危险字符。您可能希望在将数据插入数据库之前或创建slug时执行此操作。

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

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

答案 1 :(得分:0)

更改config.php

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

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

但是 - 你真的真的不想这样做 - 它让你开启大规模的安全问题。您应该重新考虑解决问题的方法。我建议你使用flash_message和文本,甚至_POST它。使用URL来处理那种文本只会导致问题和错误......