CodeIgniter フレームワークを使用して PHP で記述された Web サイトがあります。数年前から進行中の作業であり、最終的にはオープンソースにしたいと考えています。現在、約 10,000 行の PHP (CodeIgniter ライブラリを除く) まで実行されます。最近、CodeIgniter を使い続けることができないことが明らかになりました。
これに関する主な問題は、開発者が XSS と適切なエスケープを理解していないか、気にしていないように見えることです。属性で直接終了する関数への引数 (例: anchor()
) でさえエスケープされません。フォーム入力を生成する関数は、エスケープするかどうかに関して一貫性がなく、ドキュメントはこのトピックについて沈黙しています (私ができることは、ソース コードを読むことだけです)。そして、「テンプレートエンジン」は、それが出来たとしても逃げないので、基本的には役に立たない。<?=anchor(html_escape('foo/bar/' . rawurlencode($baz)), html_escape($baz))?>
リンクを出力したいたびに書くのはうんざりです。それはコードを地獄のように醜くし、私はいくつかの場所を見逃したと確信しています. 場合によっては、入力が不適切に「サニタイズ」され、この動作をオフにすることができません。たとえば、ユーザーが次を含む文字列を入力した場合%10
どのフォーム入力フィールドでも、その部分文字列は、アプリケーションが認識できるようになる前に削除されます。
私のコードは、データベース (アクティブ レコード パターン)、電子メール、フォーム検証、ページネーション、セッションなど、多数の CodeIgniter ライブラリに依存しています。
別のPHPフレームワークは何ですか:
- MVC パターンに基づいています。
- 適切なテンプレート エンジンを備えており、エスケープ処理が苦手ではありません。
- CodeIgniter からの移行は比較的簡単です (ほとんどのライブラリが同じです)。
?