小编del*_*bel的帖子

Laravel 5/Codeception无法正确路由

我正在尝试使用代码编写一个控制器函数的API测试用例,我遇到的问题是,到控制器函数的路径似乎没有被正确评估,并且评估似乎根据我的不同而不同在我的测试用例中.

以下是我的测试用例中的代码示例:

use \ApiTester;

class CustomerRegisterCest
{
    // tests
    public function testGetRegister(ApiTester $I)
    {
        $I->sendGET('register');
        $I->seeResponseCodeIs(200);
    }

    public function testPostRegister(ApiTester $I)
    {
        $I->sendPOST('register', [
            // set the data in here
        ]);
        $I->seeResponseCodeIs(200);
    }
Run Code Online (Sandbox Code Playgroud)

我有一个包含这些路由的routes.php文件:

Route::get('/', ['as' => 'home', 'uses' => 'HomeController@getIndex']);
Route::get('register', ['as' => 'getRegister', 'uses' =>'RegistrationController@getRegister']);
Route::post('register', ['as' => 'postRegister', 'uses' => 'RegistrationController@postRegister']);
Run Code Online (Sandbox Code Playgroud)

我已经将一些调试语句插入到我的控制器类中,以便我可以看到运行的路由,如下所示:

    Log::debug('GET register');  // or GET index or POST register, etc
Run Code Online (Sandbox Code Playgroud)

目前我已经从控制器类中删除了所有内容,因此只包含调试语句.

当我像上面那样运行测试用例时,我得到以下调试输出:

GET register
GET index
Run Code Online (Sandbox Code Playgroud)

...所以似乎sendPOST('register',...)实际上路由到"/"的GET路由而不是"/ register"的POST路由.在测试用例之外一切正常 - 我可以POST到寄存器路由正常,路由似乎工作正常,问题只出现在一个代码测试案例中.

如果我更改测试用例,以便我在同一个函数调用中执行sendGET和sendPOST,例如:

    // tests
    public function …
Run Code Online (Sandbox Code Playgroud)

php laravel codeception

13
推荐指数
1
解决办法
684
查看次数

验证并签署HTTP请求

我正在寻找关于HTTP请求的身份验证和签名(完整性检查)的最佳实践的一些指导/意见.我对于使用的语言和技术相当开放,但基本参数和要求如下:

  • 需要身份验证和完整性检查.
  • 该请求包含敏感数据并将通过HTTPS传递,但我无法假设攻击者无法在HTTPS加密(在客户端由某些非法安装的软件)或服务器端嗅探请求例如,通过位于HTTPS端点和实际服务器之间的嗅探器.HTTPS加密/解密处理已传递给外部负载均衡器,因此攻击者可以在负载均衡器和服务器之间插入嗅探器.
  • 我需要确保交易不能伪造.
  • 我需要确保无法重播交易.
  • 请求可以是GET或POST,因此任何额外数据都需要保持在GET请求的最大大小限制内.

我们考虑过的事情:

  • 每个请求的用户名/密码.这保证了我认为的身份验证,但如果攻击者可以嗅探用户名/密码对,那么一切都会失败.
  • 每个请求的私钥签名.服务器将具有公钥,只有客户端将具有私钥.这保证了完整性,因为只有客户端可以生成签名,但服务器可以检查签名.它通常也保证身份验证,因为私钥不是请求数据的一部分,不能被嗅探.但是,它本身并不会停止重放事务,因为具有相同数据的2个事务将具有相同的签名.
  • 使用加密客户端随机数(https://en.wikipedia.org/wiki/Cryptographic_nonce)作为请求数据的一部分,并将其包含在要签名的数据中.我们遇到了这些问题,特别是当它们是在客户端生成时,因为如果它们不是足够随机的,那么攻击者可以找出它们是如何生成的,然后攻击者可以生成一系列自己的nonce.客户端生成相同的序列,这可能导致拒绝服务攻击,因为客户端将尝试重新使用已经被攻击者使用的nonce.已经考虑在服务器端生成随机数,但这是一个额外的事务,可能是性能问题.
  • 在请求数据中包含日期/时间,但这可能会导致客户端时钟和服务器时钟偏离同步的问题.

如果某些管理员决定将此标记为重复,那么我认为其他Q不能完全解决此问题的全部范围:

security authentication encryption http

8
推荐指数
1
解决办法
3673
查看次数

标签 统计

authentication ×1

codeception ×1

encryption ×1

http ×1

laravel ×1

php ×1

security ×1