更改网址时,Opencart显示错误

时间:2015-07-01 12:59:36

标签: php security opencart opencart2.x

我正在使用index。我只是检查了一些随机技巧,并将网址opencart 2.0.2.0写入index.php?route=common/home。它显示了一个错误index.php?route=common/home%00不明白为什么会发生这种情况。任何人都可以请帮助我知道为什么会发生这个错误,我该如何解决呢?

2 个答案:

答案 0 :(得分:1)

经过一番研究后,我发现它实际上是PHP中的一个错误(报告here @ 2/4/2015并已修复)

你的问题是什么?
空字节(%00)导致PHP字符串中的截断(这是正常的,我认为因为PHP字符串是通过c字符串实现的)

那么在OC中发生了什么?

  • 打开文件<OC_ROOT>\system\engine\action.php(您收到错误的文件),类Action驻留在那里,它负责解析路由参数,确定要加载的相应控制器+该控制器中的哪个函数用于调用和保留方法参数,以便稍后在执行期间传递
  • 在该行中$file = DIR_APPLICATION . 'controller/' . str_replace(array('../', '..\', '..'), '', $path) . '.php';
    您将注意到通过将.php附加到通过解析路由参数构造的$path变量来加载控制器文件,因为您在路由中添加了一个额外的空字节,$file看起来像这样:bla bla bla/common/home\0.php\0导致剥离导致不存在的文件的.php路径,这就是OC加载错误页面的原因

如何解决
只需关闭项目中的警告,如果您的意思是&#34;我该如何解决?&#34;使它工作,然后在解析它之前从同一个文件中删除路由参数中的空字节,但我不建议你这样做,因为它处理了黑客,你将解除它的处理:d

答案 1 :(得分:0)

这只是对这个opencart版本的警告。要快速解决方案,您将添加“error_reporting(0);”在__construct函数中。

谢谢。