0

アプリでcodeigniterを使用しています。フォームがあります。textarea要素で、私は次のようなものを書きました

%Features%

ただし、これを$ this-> input-> post(key)でエコーしたい場合は、次のようになります。 �atures%

'%Fe'は消えます。

CIのメインのindex.phpファイルで試しvar_dump($_POST)てみましたが、上記の単語は完全に問題ないことがわかりました。しかし、入力ライブラリを使用してフェッチしている場合(xssフィルタリングがオンになっている場合)、問題が発生します。

XSSフィルタリングがオフの場合、最初は問題ないように見えます。ただし、データベースに保存して次回表示すると、同じ問題が発生します(xssフィルタリングがオフになっている場合でも)。

4

2 に答える 2

1

%Feたまたま、文字254を表すURLエンコードされたシーケンスのように見えます%FE。これは、Unicodeの「そのシーケンスが何を意味するのかわかりません」というグリフに組み込まれています。

送信時にフィールドをデコードするときに、「XSSフィルター」が熱心すぎることは明らかです。

また、プロセスの後半のある時点で、データベースから結果を出力するときに、URLデコードが再度実行される可能性が非常に高くなります。データベースをチェックして、実際の文字列が正しく表現されていることを確認してください。

于 2011-03-21T18:37:35.443 に答える
1

最初に:変数をdbに保存する前にエスケープします。%はSQLで特別な意味を持っています。

2番目:%はURLでも特別な意味を持っています。%20は%FEがinput()によってデコードされる文字にマップされます

于 2011-03-21T18:38:19.547 に答える