質問

実際のコードとしてhtmlに表示するためにコードをエスケープする場合(たとえば、コードスニペットの例)、データベースに保存してからエディター(htmlページ)に戻すと、エスケープされたテキストではなく、htmlとして表示されます。

textareaタグをテキストに含めると、問題が発生します。これは、編集エリアを早まって閉じ、保存時に書き込む部分を切り落とすためです(または、タグを閉じない場合はさらに多くなります)。

だから私の質問は、これはブラウザ側の意図された動作ですか? -<!> gt;だから私はテキストをエスケープする必要があります(おそらくコードとプレタグ)?変更するたびに?それとも私は何か間違ったことをしていますか?

*注これを使用しているのは私だけであり、ほとんどが学習のためだけであるため、ブラウザで使用するときにHTMLを処理する必要があるチェックの方法ほどセキュリティの側面については心配していません期待どおりに動作します。

役に立ちましたか?

解決

@Bob: htmlentities() htmlspecialchars()

htmlentities()は、ASCIIコードを持つすべての文字をそのコードに変換します。 htmlspecialchars()は、<!> amp ;、引用符、<!> lt;など、HTMLで特別なもののみを実行します。または<!> gt;

これは非常に大きな違いであり、いくつかの点を壊す可能性があり、またhtmlentities()を使用すると結果が膨大になる可能性があります。

他のヒント

私の経験では、何らかの特殊文字のエスケープを行う必要があります。 PHPでは、関数はhtmlspecialchars()です。他の機能については知りません。ただし、ブラウズではエンコードされた文字がテキストエリアに正しく表示されます。

ほとんどのWebベースの言語には、HTMLで解釈された文字をエスケープするためのライブラリ関数があるため、使用している言語のドキュメントを確認してください。

ダリルが言ったように、html_entities()(htmlspecialchars()のエイリアス)はPHPでトリックを行います。

これはブラウザの意図した動作ですか? はい、ブラウザは(エスケープされていない)HTMLコードをページに属するHTMLタグとして解釈し、それらに作用します。

では、テキストをエスケープする必要があります(おそらく、コードとpreタグ)? はい、ダリル・ハインが言ったように、htmlspecialchars()を使用します。それらはブラウザによって正しく表示され、<!> quot; unescape <!> quot;する必要はありません。編集から戻ってきたデータ。

...何か間違っているのですか? アプリケーションへの入力またはアプリケーションからの入力を調べて、ブラウザ、データベースサーバー、およびソリューションの他の部分にとって特別な意味を持つ文字が含まれている可能性があるかどうかを確認する必要があります。相互作用ごとに特殊文字を適切にエスケープする必要があります(つまり、MySQLデータベースの場合はmysql_escape_string()、HTMLの場合はhtmlspecialchars()など)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top