我的链接看起来像这样:
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错误?
答案 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来处理那种文本只会导致问题和错误......