什么是CSRF攻击?
我们举例来说,假如一个用户已经以管理员身份登陆,在未退出系统,且管理页面还打开的状态下,在一个新的浏览器TAB页中访问了一个恶意网站,这个网站的页面有一个图片,图片的连接地址是:
http://some/joomla/site/administrator/index2.php?option=com_users&task=delete...
这个时候就会发出一个请求,而这个请求的身份验证会通过,这个请求会执行,那么可能导致一些非预期的麻烦。
Joomla! 怎样来防止CSRF攻击?
在Joomla!中,可以通过一个与用户和系统相关的随机串的验证,来防止CSRF攻击,这个串可以验证请求来自合法的form和合法的session,当然这个验证也并不能完全防止,但是可以处理大部分的问题了。具体方式如下:
POST方式
你需要在form表单中加入:
<?php echo JHTML::_( 'form.token' ); ?>
GET方式
可以在请求中加入:
<?php echo JRoute::_( 'index.php?option=com_example&controller=object1&task=save&'. JUtility::getToken() .'=1' ); ?>
注意最后的 JUtility:getToken
在提交后的页面中验证代码如下:
我们建议安全的浏览行为如下:
- Don't browse other sites in the same browser while you are logged into your site.
- Log out from your site after you are done.
- Don't stay logged into your site while you are not doing anything.
- Ensure that the address in the browser bar matches the address of your site.
相关文章



