質問

どのタイプの入力は、クロスサイトスクリプティング(XSS)およびSQLインジェクション攻撃に対して最も脆弱ではありません。

PHP、HTML、BBCodeなど。友人の設定を支援しているフォーラムのために知る必要があります。

役に立ちましたか?

解決

あなたの状況についてもっと知る必要があります。脆弱な方法は?常にすべきいくつかのこと:

  • SQLインジェクションから保護するために、データベースに保存する前に文字列をエスケープします
  • 悪意のあるhtml / javascriptを防止するために、未知のソースからユーザーに文字列を印刷するときにHTMLエンコード文字列

ユーザーが提供したphpを実行することはありません。 BBCode / UBBCodeは、意味的に正しいhtmlに変換されるため問題ありませんが、不正な形式の画像タグに関連するXSSの脆弱性を調べることができます。 HTML入力を許可する場合、特定の要素をホワイトリストに登録できますが、これはエラーが発生しやすい複雑なアプローチになります。したがって、前述のすべてを考慮すると、すぐに使える BBCode ライブラリを使用するのが最善の策だと思います。

他のヒント

(コメントでこれを投稿しましたが、選択リスト、ラジオボタンなどをサニタイズする必要がないという印象を受けている人がいるようです。)

ラジオボタンが安全であることを期待しないでください。サーバー上のデータをサニタイズする必要があります。ローカルマシンでhtmlページを作成し、ラジオボタンと同じ名前のテキストボックスを作成して、そのデータをポストバックできます。

より上級のユーザーは、 WebScarab などのプロキシを使用できます。サーバーにポストバックされるときにパラメーターを調整します。

良い経験則は、常にパラメータ化されたSQLステートメントを使用し、常に HTMLに入れる前にユーザー生成データをエスケープすることです。

それらはどれもありません。サーバーで期待されるすべてのデータは、知識と動機を持つ人が操作できます。ユーザーが使用すると予想されるブラウザとフォームは、サーバー/スクリプトにデータを送信する有効な方法の1つにすぎません。

XSSのトピックおよび関連する問題に精通してください

あらゆる種類のブール値。

無効な入力も簡単にフィルタリングできます。

;-)

HTMLなどの入力をサニタイズするBBコードパーサーがたくさんあります。パッケージとして入手できるものがない場合は、オープンソースフォーラムソフトウェアパッケージの1つを参照してください。

BBコードは「標準」なので意味があります。フォーラム用。

攻撃に対して最も脆弱でない入力は、「非入力」です。

正しい質問をしていますか?

Odinのために、入力をサニタイズしないでください。ユーザーがフォームに好きなものを入力することを恐れないでください。

ユーザー入力は本質的に安全ではありません。受け入れられた答えは、私の銀行のような種類のWebインターフェイスにつながります。O'Reilly氏は、名前に違法な性格があるため、口座を開設できません。安全でないのは、ユーザー入力の使用方法です。

SQLインジェクションを回避する正しい方法は、準備済みステートメントを使用することです。データベース抽象化レイヤーでそれらを使用できない場合は、正しいエスケープ関数を厳密に使用してください(myslq_escape et al)。 XSS攻撃を防ぐ正しい方法は、striptags()のようなものではありません。すべてをエスケープする-PHPでは、htmlentities()のようなものが探していますが、文字列をHTMLテキストの一部として出力するか、HTML属性として出力するか、Javascriptの内部で出力するかなどに依存します。適切なコンテキスト。また、ユーザーの入力をページに直接印刷しないでください。

最後に、Webアプリケーションの脆弱性トップ10を見て、それらを防ぐために正しいことをしてください。 http://www.applicure.com/blog/owasp-top-10-2010

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