Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php codeigniter url标题特殊字符错误_Php_Codeigniter_Url_Special Characters - Fatal编程技术网

Php codeigniter url标题特殊字符错误

Php codeigniter url标题特殊字符错误,php,codeigniter,url,special-characters,Php,Codeigniter,Url,Special Characters,我有这样一个链接: www.localsite.dev/posts/332635955335419755 这很有效,我可以看到ID=332635955335419755的帖子 但是当我尝试将它的一些文本添加到URL以获得更漂亮的URL时。。。Codeigniter将显示404页错误,如果它有一些特殊字符。。。事实上,它不会发生,除非你尝试XSS或等它。。。我没有得到XSS'ed或类似的只是抛出一个404页错误,如果我删除了ID后的文本,它将工作正常 www.localsite.dev/post

我有这样一个链接:

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>
www.localsite.dev/posts/332635955335419755/
那么,如果slug具有这些字符,我如何确保不会出现404错误呢?

在config.php中进行更改

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

$config['allowed_uri_chars']='a-z 0-9~%:\-/';
但是-你真的不想这么做-这会让你面临巨大的安全问题。你应该重新考虑你解决这个问题的方法。我建议你用一条带文字的快闪信息,甚至把它贴出来。使用URL处理此类文本只会导致问题和错误…

config.php中的更改

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

$config['allowed_uri_chars']='a-z 0-9~%:\-/';

但是-你真的不想这么做-这会让你面临巨大的安全问题。你应该重新考虑你解决这个问题的方法。我建议你用一条带文字的快闪信息,甚至把它贴出来。使用URL处理此类文本只会导致问题和错误…

你的问题不是如何防止404,而是如何制作安全的URL片段

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

还有一些问题,但我不确定如何处理xss字符串。理想情况下,您可以使用这三种方法的组合—测试它


一旦你做到了这一点,你可能仍然需要更改
$config['allowed\u uri\u chars']
以允许这两种安全方法通过,但至少应该更安全。

你的问题不是如何真正防止404,而是如何制作安全的url段塞

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

还有一些问题,但我不确定如何处理xss字符串。理想情况下,您可以使用这三种方法的组合—测试它


完成后,您可能仍然需要更改
$config['allowed\u uri\u chars']
允许这两种安全方法通过,但至少应该更安全。

如何确保即使使用第二个URL和该文本,也不会出现404错误?如何确保即使使用第二个URL和该文本,也不会出现404错误?那么,如果用户真的编写了一篇包含
的帖子,我会怎么办由于允许的uri字符,将获取codeigniter错误。。。这不对吗?这应该可以在url中加载吗?或者最好删除打开的标签,例如等等。。。因此,问题将很清楚,这一切都取决于你如何在你的控制器周围传输数据。如果你是通过URL来实现的,那么我认为你会遇到类似上面的URL的问题。您应该让用户查看您拥有的ID(第一个链接),然后通过您的视图+变量传递+\u POST等生成任何附加数据。我认为添加slug是因为更好的SEO(?)。。。如果有机会发生类似的事情。。因为我无法控制用户发布的内容。。。我将坚持使用IDs,看看以后我将如何处理它……因此,如果用户确实编写了一篇包含
的帖子,那么我将由于允许的uri字符而得到codeigniter错误。。。这不对吗?这应该可以在url中加载吗?或者最好删除打开的标签,例如等等。。。因此,问题将很清楚,这一切都取决于你如何在你的控制器周围传输数据。如果你是通过URL来实现的,那么我认为你会遇到类似上面的URL的问题。您应该让用户查看您拥有的ID(第一个链接),然后通过您的视图+变量传递+\u POST等生成任何附加数据。我认为添加slug是因为更好的SEO(?)。。。如果有机会发生类似的事情。。因为我无法控制用户发布的内容。。。我会坚持使用IDs,看看以后如何处理它。。。