草庐IT

csrf-protection

全部标签

php - 从 PHP 中的子类访问 protected 方法

我至少可以使用两种基本方法从子类访问protected类方法:parent::myMethod();$this->myMethod();如果我不需要在子类中覆盖它,在这种情况下我必须这样做:functionmyMethod(){...parent::myMethod();...}最推荐的调用方式是什么?我个人觉得使用parent::myMethod()而不是$this->myMethod更舒服,因为第一个立即告诉我这个方法正在被继承。但我不确定在性能和最佳实践方面采用哪种方式。编辑:检查这个,这是我问题的真实情况。它使用CodeIgniter,但即使您不熟悉它,您也可能会了解它:cla

php - 唯一的表单 token 禁用用户的多任务处理

如果我想保护我的站点和用户免受跨站点伪造(CSRF)攻击,我可以生成一个唯一token$token=md5(time()*rand);在具有表单的每个页面上。token是在隐藏的输入字段中提交的echo'';同时存储在session变量中$_SESSION['token']=$token;.我会检查是否在任何提交的表格上if($_POST['token']==$_SESSION['token'])并相应地进行。但是有些用户可能会同时处理多项任务。这是我在发布此内容时实际上正在做的事情。在撰写我的帖子时,我会打开不同的窗口/选项卡来研究信息或查看有关堆栈溢出的其他一些问题。堆栈溢出让我可

php - 跨站请求伪造

我读了thistutorial这为防止CSRF提供了一个很好的解释,但它仍在我的脑海中浮现。根据方法一中的本教程,他们在每个请求中都包含一个随机token。所以他们在表格中包含了这样的内容:"value=""在提交表单后,他们会检查token是否匹配。它如何帮助防止CSRF?当攻击者向用户发送恶意链接时,我感到很困惑,当用户点击它时,根据我的说法,token每次都会匹配。 最佳答案 页面中的token必须与存储在cookie(或session)中的token相匹配。设置cookie的站点知道token值是什么,并且可以在表单中指定它

php - 无法访问特征中的 protected 属性

正在编写一些PHP。经过一些调试后,我将我的精彩行为简化为该代码:traitT1{functiona1(){return$this->var;}}traitT2{useT1;functiona2(){returnT1::a1();}}classA{useT2;protected$var=3;}$a=newA;echo$a->a2();只要类A中的$var定义为public,这段代码就可以工作;因为我想保护它(只是为了让它更好),我偶然发现了一个错误Fatalerror:CannotaccessprotectedpropertyB::$varin...online5为什么在这种情况下会发

php - 如何在不测试 protected 方法时达到 100% 的代码覆盖率

这是否有意义:由于我们通常只想测试(类的)API而不是我们通常不需要/不想测试protected方法的实现细节。由于我们不希望仅仅因为我们不测试实现细节而降低代码覆盖率,因此我们应该为那些protected方法使用@codeCoverageIgnore注释。 最佳答案 通过公共(public)API测试您的私有(private)和protected方法。“不要测试你的私有(private)方法”的规则并不意味着你不应该测试私有(private)方法提供的行为。这意味着您应该通过公共(public)方法测试该行为。如果这样做,您将在以

php - 无法登录 mediawiki : canceled as a precaution against session hijacking?

多年来我一直在使用托管在AWSEC2实例上的私有(private)mediawiki我认为某些扩展程序出了问题,特别是在数学渲染过程中停止了,所以我尝试重新加载页面,但GoogleChrome浏览器的缓存已全部删除。在那之后,我无法登录,看到这条消息“您的登录session似乎有问题;此操作已被取消,以防止session劫持。返回上一页,重新加载该页面然后再试一次。”我试过了,1.重启apache服务器2.试过MediaWikisessionsandcookiesnotworkingonmulti-serverbehindCloudFlare3.试过Mediawiki,can'tlog

php - 在 Laravel 中根据环境禁用 CSRF 中间件

在我的应用程序中,我想在我的笔记本电脑APP_ENV=local上运行时禁用CSRF,在开发时也想禁用CSRFAPP_ENV=dev。无法理解如何在routes.php或网络中间件中做到这一点。这是我的routes.phpRoute::group(['middleware'=>['web']],function(){Route::get('/',function(){returnview('welcome');})->middleware('guest');Route::group(['middleware'=>'auth'],function(){Route::resource('b

php - Slim 框架无法使用 protected 变量编码为 json

基本上我是用json对响应进行编码,但无法弄清楚为什么它一直返回正确数量的数组成员,但它们是空的。$app->get('/api/server_list',function($request,$response,$args){$serverlist=newServerListing($this->db);$servers=$serverlist->getServers();$newResponse=$response->withJson($servers);return$newResponse;});这是上面添加了print_r($servers)的输出[{},{}]Array([0]

php - 带有 axios 和 vue 的 laravel 5.8 中的 CSRF

我有疑问,我正在使用Laravel5.8,并且我在Vue中有一个组件,它是一个简单的注册表单。当我通过POST方法提交表单时,Laravel没有向我请求CSRFtoken,这是正常行为吗?我没有使用API路由。我刚刚注意到在Chrome存储中有一个XSRF-TOKEN。那么,现在如何通过ajax进行CSRF验证? 最佳答案 如laravel5.8文档中所述WhenbuildingJavaScriptdrivenapplications,itisconvenienttohaveyourJavaScriptHTTPlibraryauto

php - vue组件中的csrf token

我有一个集成了Vue.js的Laravel5.3项目,我想在我的表单中使用CSRF-TOKEN。Formhtml代码在Vue组件文件中resources/assets/js/bootstrap.js我有这个:Vue.http.interceptors.push((request,next)=>{request.headers.set('X-CSRF-TOKEN',MyApp.csrfToken);next();});然后我有主要的vue文件/resources/assets/js/app.js:require('./bootstrap');Vue.component('callback