フレームワークを誤って使い、セキュリティホールを開けてしまうことを防ぐのは不可能です。どのようにしてそれらを避けるかについて説明します。セッションユーザに関連する情報、特にログイン状態を保つ必要があることが、よくあります。セッションがなければ、ユーザは、リクエスト毎に認証照明を送信しなければなりません。ユーザのブラウザに保存される、ユーザをウェブサイトで特定するクッキーのセット、ウェブアプリケーションが保存先にデータ層よりもむしろセッションを選ぶかもしれない、例えば言語情報のために存在します。秘密のままセッションは、署名はされていますが暗号化はされていないキー/値のハッシュです。これは、秘密鍵が安全である限り、第三者がセッションを捏造できないことを意味します。公開されたリポジトリにこれをコミットしてはいけませんし、他の誰かによって書かれたアプリケーションをインストールするときには、秘密鍵を自分自身の物に変更しなければなりません。コマンドで行うことができます。重要なデータは保存しないとは言え、セッションは暗号化されていないので、セッションに重要なデータを保存するべきではありません。上の接続を盗聴することで、これらのデータをユーザクッキー上に見ることができます。この制限に加え、保存できるのは文字列のみです。ウェブページに挿し込むことで成立します。誰でもコメントできるブログシステム書いているとしましょう。ページに訪問者が書き込む内容を盲目的に受け入れる場合、このサイトは攻撃者に対して開かれています。攻撃は以下のように行われます:訪問者にポップアップを表示します攻撃者によって制御されたサイトに訪問者をリダイレクトします現在の訪問者にのみが閲覧できるべきであった情報が盗まれ、攻撃者のサイトに送信されますしたがって、これらの攻撃からアプリケーションを保護するのは非常に重要です。テンプレートエンジンは自動的に文字列をエスケープします。有効にされていることを確認する必要があります。新規に作成されたアプリケーションでは、これはデフォルトで設定されます。前のリリースで作成されているな場合、これは有効に設定されていないかもしれません。future.escapeInTemplates=trueこのオプションを有効にすることを強くお勧めします。メソッドを使用することができます。文字列がユーザ入力から来る場合は、まず初めにサニタイジンズされることを確認する必要があります。ホワイトリスト方式を優先してください。クエリを実行するユーザ入力を使用することで成立する脆弱性です。データを破壊したり、または現在のユーザにとって見えるべきでないデータにアクセスするために使用されます。インジェクションに対応するべきです。マークを使用するよう注意深くあるべきです。アプリケーションにアクセスするページに悪意あるコードかリンクを含めることで実行されます。アプリケーションのセッションがタイムアウトされていない場合、攻撃者は認証されていない命令を実行できる場合があります。メソッドを適切に使用することです。メソッドだけであるべきということを意味します。リクエストをセキュアで重要なアクションとして適切に保証する唯一の方法は、認証トークンを発行することです。メソッドがコントローラで利用可能であり、これはリクエストパラメータ中に有効な認証トークンが存在するかどうかチェックし、何かが正しくない場合は、認証不可のレスポンスを送信します。現在のセッションにおいてのみ有効な認証トークンを生成します。入力フィールドを作成します。account">#{/form}もちろん、コントローラ階層におけるすべてのアクションを保護したい場合は、これを事前フィルタとして追加することができます。