-1

HTML コードを PHP ページに投稿し、その HTML をインラインで表示したいと考えています。それは安全ですか?シンプルなフォームなので、誰かが HTML の代わりに PHP を投稿できますか? PHP がサーバーに送信されないようにするには、どのコードを使用すればよいですか?

詳細:
これは私の PHP ページです。

<HTML>
<body>
<textarea id="html_textarea"></textarea>
<button type=submit>Preview</button>

PREVIEW
<?PHP 
echo $_REQUEST['html_textarea'];
</PHP>

</body>
</HTML>

サンプルデータ:

<div>Hello world</div>

私が起こりたくないのは、誰かがこのデータを投稿することです:

<?php 
// something malicious or not safe for work 
</php>

これは理にかなっていますか?

別の更新:
助けてくれてありがとう。詳細を説明する必要があります。HTMLエディターをオンラインで書いています。したがって、開発者は HTML ページを作成および記述できます。それから、HTML ページをプレビューできるようにしたいと考えています。本文の HTML を記述し、含める CSS と JS のリストを追加できます。

彼らのために HTML ページを作成することはできますが、その場でサーバー上に HTML ページを作成するのは安全ではないと思います (または、そうかもしれません)。私は彼らの HTML と CSS と JS を私のサーバー上の私の PHP ページに投稿できるようにする必要があると思います*。私の考えでは、それは一時的なものに過ぎないと思いました。しかし、XSS のサイトによると、それは非永続的な脆弱性です。開発者がログインしている場合にのみプレビューを許可できるのかもしれません。

*サーバーと言うと震えます。だからこそ、ここで質問します。サーバーに投稿した場合はどうなりますか (サーバーが必要です)。私ははるかに安全だと感じますが、開発者は独自のサーバーを持っている必要があります (おそらく良いことです)。

4

3 に答える 3

2

HTML コードを PHP ページに投稿し、その HTML をインラインで表示したいと考えています。それは安全ですか?

あなたのコードではありません。だまされて、悪意のある HTML を JavaScript で送信するように仕向けられる可能性があります。クロス サイト スクリプティングを参照してください。

シンプルなフォームなので、誰かが HTML の代わりに PHP を投稿できますか?

echoPHP を実行しても、大きな影響はありません。問題を引き起こすにevalは、提出されたデータが必要です。

心配する必要があるのは、悪意のあるクライアント側のコードです。XSS に対する一般的な防御策は何ですか? を参照してください。

于 2013-07-30T06:53:32.530 に答える
1

ホワイトリストを使用して、ユーザーの入力を常にエスケープする必要があります。これは、HTML (特に Javascript) にも当てはまります。そうしないと、XSS 攻撃にさらされるからです。

したがって、php が既に提供しているさまざまなエスケープ関数を開始できます。独自に作成するよりも、ライブラリを使用することをお勧めします。

Web 開発におけるセキュリティについて疑問がある場合は、常に相談してください。

https://www.owasp.org/index.php/Main_Page
于 2013-07-30T06:53:20.750 に答える