アカウントを作成してユーザー名を入力すると、ユーザー名とパスワードを入力してユーザーがアカウントを作成できるサイトを作成しました。ユーザー<h1> dan</h1>
名はサイトにヘッダーとして表示されます。誰かがおそらくimgsrcを使用したり、大量の改行を使用したりすると、これは大量の悪用につながる可能性があります。ブラウザにhtmlタグを無視させるにはどうすればよいですか。そのため、このように入力<h1> dan</h1>
すると、htmlが削除されるか、通常のテキストとしてhtmlが出力されます。
7 に答える
いくつかのプログラミング言語に対するさまざまな答えがすでに与えられています。http://www.owasp.org/で、基礎となる手法(および、Web開発におけるその他の一般的な脅威)について読むことをお勧めします。
Web開発におけるセキュリティ問題の世界へようこそ
あなたが話していることは、入力検証と呼ばれます。このテーマについてはすでに多くの作業が行われており、これをゼロから始めるのは決して良い考えではありません。覚えておくべき最も重要なことは、クライアント側は簡単に操作できるため、入力の検証はサーバー側で行う必要があるということです。
ESAPI (OWASP による) は、Web セキュリティ用のオープン ソース ライブラリであり、特に入力検証を行うことができます。PHP や Java を含む多くの言語で実装されています。Java で ESAPI を使用することに興味がある場合は、入力の検証に ESAPI を使用している私のブログを参照してください。別の言語を使用している場合は、Web 上にそれらの例があります。
を使用してユーザー名を出力するだけhtmlspecialchars()
です。
実行される翻訳は次のとおりです。
- '&'(アンパサンド)は'
&
'になります- '"'(二重引用符)は
"
、ENT_NOQUOTESが設定されていない場合は''になります。- "'"(一重引用符)は、ENT_QUOTESが設定されている場合にのみ'
'
'(または)になります。'
- '<'(未満)は'
<
'になります- '>'(より大きい)は'
>
'になります
ブラウザでこれを行うことはできません。バックエンドでこれを行う必要があります。
- ユーザー名、パスワード、必要な値に関係なく、許可されている文字を特定します
- フォームが送信されたら->以前に定義したパターン(サーバー上)に対して入力を検証します
- クライアント(ブラウザ)に送信する前に、データをエスケープ/エンコードします
<h1> dan</h1>
。<h1glt; dan</h1>
- いくつかのセキュリティ上の懸念と、SQLインジェクションやクロスサイトスクリプティングのようなそれらを回避する方法に自信を持ってください
PHP でstrip_tags()関数を使用できます。
サーバー側のコードでユーザーを作成しているときに、html タグを消去できる場合があります。
また、サーバー側でクライアント側からの値をきれいにする必要があると思います。
すべての html タグを削除するか、はるかに簡単に、すべての<
と>
文字を HTML エンコーディングに置き換え<
、>
.