0

ユーザー入力をフィルタリングする (タグなどのユーザー データをブラックリストに登録する) ことにより、Web アプリでのユーザー入力を確実にサニタイズしようとしています。基本的に、Zend は、開発者が要件と見なす場合はいつでもこれを具体的に行うことを提案しているため、ページ A にフォームがある場合は、フォーム データが取得された後にその pageAaction() でフィルタリングを行う必要があります。アプリ内のすべてのフォーム データは次のように取得されます。

$this->_request->getParams(); 
$this->_request->getParam('specificParamName'); // to return specific param

さて、私の Web アプリでは、すべてのユーザー入力は、ブラックリストに登録されたフィールドに対してサニタイズする必要があります。フォームごとにブラックリストと比較するのではなく、明らかにコードを 1 か所に集中させたいと考えています。私の理解では、これは常にフォームデータを取得する場所であるため、_request オブジェクトの getParams() または getParam() メソッドで行う必要があります。

はいの場合、どうすれば同じことができますか? コアの Zend クラスに手を加えたり、独自の変更を加えたりしたくありません。

そうでない場合、コードを一元化するための最善の戦略は何ですか?

免責事項: Zend フォームは使用しておらず、代わりに独自のフォームをカスタム作成しています。

4

3 に答える 3

4

入力をサニタイズするカスタム関数を実装するようにコントローラー クラスを拡張できます。

    class UserController extends Custom_Controller_Abstract
    {

        $user = $this->getSafeParam('userid');
    }

library/custom/controller/Abstract.php 内

    class Custom_Controller_Abstract extends Zend_Controller_Action
    {



        public function getSafeParam($paramName)
        {
            return sanitize($this->getRequest()->getParam($key));
        }

        protected function sanitize($value)
        {
            return $value;
        }
    }
于 2013-04-17T06:57:18.823 に答える
0

getParamsorを使用getParamしてもフォームからデータがサニタイズされないため、代わりに$form->getData($post)orを使用する必要があります$form->getValidData($post)

しかし、私はこの質問をかなり前にzend Framework sanitizing dataに尋ねましたが、そこにはいくつかの良い答えがありました.

于 2013-04-17T06:49:58.250 に答える