我正在制作一个需要相当安全的CakePHP系统,因为我们处理的是钱,客户账户等.到目前为止,一切都很好,直到我必须与我需要的支付平台集成重定向到他们的网站,他们重定向回我的网站.
这在我的开发机器(debug = 2)中工作正常,但在生产中,当客户被重定向回来时,他得到登录提示而不是回到他的"登录区域".经过多次挖掘后我发现这是因为CakePHP设置了session.referer_check,如果HTTP_REFERER来自另一个主机而不是我的,则会使会话无效.
现在,通常情况下,我会毫不犹豫地禁用它,但在这个系统中我更关注安全性而不是正常情况.
我的问题是session.referer_check究竟应该保护我什么?
如果我将其关闭,我的网站可以进行什么样的攻击/利用/坏事?
我猜这里存在一些原因,但是我无法想象它会保护我什么.
你能给我任何想法吗?
安全禁用吗?
谢谢
Daniel
我在用
$form->input('Model.name', array('multiple'=>'checkbox');
Run Code Online (Sandbox Code Playgroud)
我试图基于模型数据来设置要检查的特定复选框.
我怎样才能做到这一点?
将我的PHP升级到5.4.3(WAMP服务器2.2)后,我在CakePHP 1.3中创建的Web应用程序在我的索引中显示以下错误:
严格的标准:重新定义C语言中类Object的已定义构造函数:第63行的...\cake\cake\libs\object.php
严格的标准:非静态方法Configure :: getInstance()不应该在第49行的C:...\cake\cake\bootstrap.php中静态调用
我发现有些人通过将error_reportingphp.ini 设置为来解决这个问题E_ALL & ~E_STRICT.
我在我的计算机上存在的php.ini文件(C:\ wamp\bin\php\php5.4.3和C:\ wamp\bin\apache\apache2.4.2\bin)中都这样做但它没有解决问题.
我也尝试php_value error_reporting 6143输入C:...\cake.htaccess但没有成功.
有谁知道我该如何解决这个问题?由于火鸟,我无法升级我的CakePHP.
我使用JQuery/AJAX将我的联系表单加载到我的页面中.
联系表单包含reCaptcha脚本.
不幸的是,JQuery在将脚本标签插入我的页面之前删除了它们.需要这些脚本标记,因为它们输出验证码.现在我加载的表单没有验证码.
有没有办法将控制器渲染到不同的视图然后正常?我正在尝试将一些数据从控制器传递到非默认视图.意思是我的控制器被调用:
class StocksRealtimeController extends AppController {
var $uses = 'StockRealtime';
function index(){
$action = '/TestView';
$this->set('stocksRT', $this->StockRealtime->find('all'));
//$this -> viewPath = 'Pages';
$this -> render('/TestView/index');
}
}
Run Code Online (Sandbox Code Playgroud)
...我的视图在views-> TestView-> index.ctp中
我的另一个问题是,如何将该值传递给PHP而不是CakePHP框架之外的ctp文件?
我从这里尝试了一切,没有运气.
我正在尝试让CakePHP的分页助手与bootstrap很好地配合.也就是说,我希望我的分页元素看起来像引导程序,但是由CakePHP生成.
目前我在我的浏览页面上有这个:
<?php
echo $this->Paginator->numbers(array(
'before' => '<div class="pagination"><ul>',
'separator' => '',
'currentClass' => 'active',
'tag' => 'li',
'after' => '</ul></div>'
));
?>
Run Code Online (Sandbox Code Playgroud)
产生以下标记:
<div class="pagination">
<ul>
<li class="active">1</li>
<li><a href="/test/posts/page:2">2</a></li>
<li><a href="/test/posts/page:3">3</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
问题是,因为活动页面(在这种情况下为1)<a>在<li>标签中没有元素,所以它在页面上没有正确显示(参见http://i.imgur.com/OczPh.png).
我似乎无法在Cookbook上找到任何可以解决这个问题的东西.
这甚至可以修复吗?
我有以下代码:
<?php
if (!$this->Auth->user())
{
echo $this->element('header');
}
else
{
echo $this->element('header-bar');
}
?>
Run Code Online (Sandbox Code Playgroud)
在我的视图中,应该为登录用户显示不同的标题,但会引发以下错误:
Notice (8): Undefined property: View::$Auth [APP/views/layouts/page.ctp, line 17]
Fatal error: Call to a member function user() on a non-object in /Users/cameron/Sites/thehive/app/views/layouts/page.ctp on line 17
Run Code Online (Sandbox Code Playgroud)
我该如何解决?谢谢
所以这个问题的关键在于如何防止CakePHP仅在一段时间不活动后对会话进行解除身份验证.
因此,如果用户什么都不做,那么我希望CakePHP在30分钟后将其注销.但是,如果用户选择在第28分钟不活动时访问页面,那么CakePHP应该"重置"它的超时计数器.
目前还没有发生这种情况.无论活动如何,CakePHP在我的核心配置(app/Config/core.php)中的指定时间后超时.
这是我的配置代码:
Configure::write('Session', array(
'defaults' => 'cake',
'timeout' => '30'
));
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我还没弄明白这一点.我发现的每一篇文档都介绍了如何使用xdebug来调试在Apache中运行的脚本.我需要调试php CLI脚本.
那么,例如,如何传递XDEBUG_SESSION_START变量以使xdebug启动?
我特意尝试调试CakePHP shell.因此,如果有人对此有任何额外的见解,我会非常感激.
谢谢.
有没有办法配置CakePHP以使其与Twitter Bootstrap一起使用?我意识到这个问题已在这里被提出,但答案并不完全.
还有很多教程,但它们都已过时或只是不工作,例如:使用CakePHP和(twitter)Bootstrap构建PHP应用程序,第1部分.
谢谢!
cakephp ×10
php ×5
ajax ×1
cakephp-1.3 ×1
cakephp-2.0 ×1
jquery ×1
pagination ×1
recaptcha ×1
security ×1
xdebug ×1