1

Rabo OmniKassa (Paypal に少し似ています) を CakePHP アプリケーションに実装しています。Rabo のマニュアルを読み、「空の」プロジェクト (セキュリティなし) でテストしたところ、すべて完全に機能しました。

現在、実際のアプリケーションに実装していますが、Rabo OmniKassa がアプリケーションに送り返すデータにいくつかの問題があります。これはセキュリティ コンポーネントが原因です。

セキュリティ コンポーネントは、RaboKassa が送信する POST データをブロックします。これは、アプリケーションに対する脅威になる可能性があるためです (データを挿入する外部サーバーなど)。ブラックホールを返しています。

RaboKassa からのリダイレクトなしでページをロードすると、明らかにロードされますが、POST データがないため、実際には何もしません。

インターネットで見つけたかなりの数のオプションを試しました

$this->Components->disable('Security');

$this->Security->csrfCheck = false;

$this->Security->unlockedActions = array(
        'kassareturn' // which is the function the RaboKassa has to return to
    );

しかし、どれも機能していないようです。

私はこの問題を解決できないようですので、以前にこれまたは同様のことを試みた人はいますか?

RaboKassaを変更できないので、POSTデータを受信する必要があります...

CakePHP 2.1.3 を使用しています。

4

1 に答える 1

1

インターネット上のどこかで見つけたものを試す前に、常に公式ドキュメントを確認することをお勧めします。

POST データ検証も無効にする必要があります

CSRF チェックの他に、POST データ検証もあります。外部ソースから POST データを受信するときは、両方のチェックを無効にする必要があります。

$this->Security->csrfCheck = false;
$this->Security->validatePost = false;

そして、特定のアクションに対してのみこれを無効にしていることを確認することを忘れないでください!

public function beforeFilter() {
    parent::beforeFilter();

    if($this->request->params['action'] === 'kassareturn') {
        $this->Security->csrfCheck = false;
        $this->Security->validatePost = false;
    }
}

こちらもご覧ください

SecurityComponent::$unlockedActions (CakePHP 2.3 以降)

SecurityComponent::$unlockedActionsCakePHP のインストールを少なくとも 2.3.x に更新すると、 using が魔法のように機能し始めることに気付くと思います。この機能は CakePHP 2.3 以降でのみ利用可能です。

http://book.cakephp.org/...disabling-csrf-and-post-data-validation-for-specific-actionsも参照してください。

于 2014-06-11T16:02:05.647 に答える