Php 如何修复codeigniter中的易受攻击问题?(权限提升、会话重播攻击和HST丢失)
我有codeigniter web应用程序。当我用burp-suite扫描应用程序时,我面临一些安全问题。您能告诉我如何解决以下安全问题吗 问题是:Php 如何修复codeigniter中的易受攻击问题?(权限提升、会话重播攻击和HST丢失),php,codeigniter-3,burp,Php,Codeigniter 3,Burp,我有codeigniter web应用程序。当我用burp-suite扫描应用程序时,我面临一些安全问题。您能告诉我如何解决以下安全问题吗 问题是: 非随机CSRF令牌- 建议生成每个用户会话唯一的随机令牌、较大的随机值以及 由加密安全的随机数生成器生成 易受跨站点请求伪造攻击- 建议使用基于令牌的缓解措施;通过在html请求中实现同步器令牌模式 权限升级- 建议在普通用户无法访问受限URL的情况下正确处理会话 会话重播攻击- 建议开发会话处理方法,以确保用户会话在浏览器终止时结束 仅设置不带H
建议生成每个用户会话唯一的随机令牌、较大的随机值以及 由加密安全的随机数生成器生成
login.php
<script type="text/javascript">
$(document).ready(function(){
$.ajaxSetup({
data: {
'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>'
}
});
});
</script>
<form>
<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>" />
<input autocorrect="off" maxlength="50" autocapitalize="off" autocomplete="off" name='email' id='email' type='text' />
<input name='current_url' id='current_url' value="<?php echo $current_url; ?>" type='hidden'/>
<input name='password' id='password' maxlength="50" type='password' autocorrect="off" autocapitalize="off" autocomplete="off" />
<input type="submit" value="Login" name="btnsubmit" />
</form>
我需要加密当前的网址,用户名和密码。下面是我从打嗝室得到的信息。
csrf\u token\u myapp=3d44fd27c845cf3ceb8cb521233c52150&csrf\u token\u myapp=3d44fd27c845cf3ceb8cb521233c52150&email=admin%40test.lk¤t\u url=&password=test1234567&btnsubmit=Login
预期方法的用途是加密前端表单的值并将其发送到服务器,然后应该使用PHP从服务器端对其进行解密。中间层可以将提交的结果视为加密值
加密:使用CryptoJS
中的AES
(在浏览器中):
(函数(){
var encrypted=CryptoJS.AES.encrypt(“我是黑客”,“我的钥匙”);
console.log(加密的.toString());
})();代码>
<代码> <代码>你是在寻找一个从前端加密数据的解决方案,把它发送到服务器并从PHP服务器端解密,这样中间层的数据就不可见了吗?是的,我需要在前端加密表单数据,在服务器端解密。您正在寻找什么合适的加密方法?我尝试了AES加密方法。表单执行GET请求而不是POST。通过这种方式,凭据会泄漏到服务器日志中,在浏览器URL中可见,而csrf的使用是毫无意义的(因为csrf验证只适用于POST请求)。谢谢@Googlian。这段代码帮助我解决了“易受跨站点请求伪造攻击”的问题。
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_token_myapp';
$config['csrf_cookie_name'] = 'csrf_cookie_myapp';
$config['csrf_expire'] = 1200;
$config['csrf_regenerate'] = TRUE;
$config['cookie_prefix'] = 'myweb_c_';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = TRUE;
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'pay_web';
$config['sess_expiration'] = 900;
$config['sess_save_path'] = '\\storage\\'
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 60;
$config['sess_regenerate_destroy'] = TRUE;
$config['charset'] = 'UTF-8';
$config['enable_hooks'] = FALSE;
$config['cache_query_string'] = FALSE;
$config['encryption_key'] = 'MKNNWNnsanas^@&#(@(*88899';
$config['composer_autoload'] = FALSE;