2

そして、私はここで(特に)フォーラムについて話しています - [PHP]ここにコード[/PHP] - スタイル。二重引用符やその他の「危険な文字」をエスケープするフォーラムもあれば、そうでないフォーラムもあります。

最良の方法は何ですか?皆さんは何を使っていますか?コード インジェクションを恐れずに実行できますか?

編集:車輪の再発明について誰が言ったのですか?

4

4 に答える 4

7

PHPechoまたはprintテキストの場合、それは決して実行されません。それは でのみ起こりevalます。これは、これを行った場合、次のことを意味します。

echo '<?php ... ?>';

それはページ出力に引き継がれ、解析または実行されません。

<これは、通常の文字 ( 、>&など) をエスケープするだけでよく、通常は安全であることを意味します。

于 2010-08-20T10:12:21.320 に答える
4

車輪を再発明しないでください。あなたの質問にBBCodeが表示されます。マークダウン ライブラリを取得して、代わりに使用します。SO はこれを使用します: http://daringfireball.net/projects/markdown/

于 2010-08-20T11:12:14.527 に答える
3
  1. PHP コード インジェクションの恐れはありませんが (HTML テンプレートの評価などの異常なことを行っている場合を除きます)、常に XSS と呼ばれる JS コード インジェクションの恐れがあります。そしてすべての危険は、可能な JS コードからのみ発生します。
  2. したがって、HTML ページに表示される PHP コードには特別な処理はありません。他のデータと同様に扱ってください。< >明らかな理由から、括弧は通常エスケープされます。
  3. 車輪を再発明しないでください。PHP には、このためのhighlight_string関数があります。
于 2010-08-20T11:24:11.800 に答える
0

あるページで引用符がエスケープされている場合は、スクリプトが2回エスケープしたことが原因である可能性があります(たとえば、magic_quotesが1回実行した後、mysql_query()を再度実行した)。データのサニタイズが適切に行われると、出力にエスケープ文字が表示されないはずです。

于 2010-08-20T13:12:33.697 に答える