0

こんにちは、XSS と PHP についての質問......

私はPHPアプリケーションを構築していますすべての入力は、クライアントを介してデータベースに送られ、次にサーバー側の検証、filtervarを使用したサニタイズ...データベースに保存された暗号化されたパスワード、scripttagを入力した場合-何でも-それが取得するスクリプトタグそのままデータベースに保存され、そこに害を及ぼすことはありません。

XSS は、入力が直接出力されている場合のみの脅威であり、htmlentities を使用するのは、ユーザーから入力されたデータを出力する時点だけです。

私のアプリはこれを行いませんが、私のプログラミングロジックでは許可されていませんが、攻撃者が悪意のあるコードを挿入して出力させる方法はありますか.

全拠点を網羅したい…………

あなたの答えを楽しみにしています........ はい、私は PDO 準備済みステートメント、bindParam、execute を使用して SQL インジェクションを防ぎ、データベースにデータを安全に保存します。

 if(filter_var($_POST['firstname'], FILTER_SANITIZE_STRING)){
            $clean['firstname'] = $_POST['firstname'];
            };      

サニタイズについては、それが改善される可能性があります........

コードを修正したところです。if ステートメントが原因で、フィルター var がスクリプト タグをサニタイズするのを妨げていました。以下を参照してください。

$clean =  array();
        $clean['firstname'] = (filter_var($_POST['firstname'],     FILTER_SANITIZE_STRING));


            $clean['lastname'] = (filter_var($_POST['lastname'], FILTER_SANITIZE_STRING));


            $clean['username'] = (filter_var($_POST['username'], FILTER_SANITIZE_STRING));  

これで、スクリプト タグはデータベースになくなりました........

4

2 に答える 2

1

入力

filtervar を使用して適切にサニタイズまたは検証した場合は、おそらくデータベース側に問題はありません。すべてのベースをカバーしたかどうかを判断するのが難しい場合があります。データベース クエリでは、保護するために、おそらくパラメーター化されたクエリを使用する必要があります。

出力

ユーザー入力が他のユーザーに表示される可能性がある場合は、ターゲット コンテンツ タイプのデータを適切にエスケープする必要があります。ユーザー名のようなものでさえ、悪意のあるものになる可能性があります。

于 2013-02-06T15:39:54.270 に答える
0

filter_var() の使用方法のコード例をいくつか示していただければ幸いです。ただし、一般的に、考慮すべき点がいくつかあります。

  • filter_var() は優れたツールです。また、ライブラリ HTMLPurifier を調べることもできます。私はそれで多くの成功を収めてきました。目標は、データベースに到達する前に悪いコンテンツを削除することです。
  • 準備済みステートメントを使用して、データをデータベースに挿入します。これは、1 つのクエリのみに使用する場合は少し重みが増しますが、SQL インジェクションのリスクを最小限に抑えてデータベースにデータを直接挿入するための最良の方法です。
  • データを出力するときは、htmlentities() と適切なエンコーディングを使用してください。たとえば、データベースで UTF-8 データを許可しないで、ISO 8859-1 出力を出力します。ドキュメントのエンコーディング、データベース、およびすべてのフィルタリング方法がすべて同じエンコーディング、できれば UTF-8 で動作することを確認することを常にお勧めします。
  • $_SERVER は PHP ではクリーンではないことを忘れないでください。多くの人が大量のフィルタリングと HTML エンティティを行っていますが、フォームではサニタイズされていないバージョンの $_SERVER['REQUEST_URI'] を使用しています。

特定のヘルプが必要な場合は、コード サンプルを投稿してください。

于 2013-02-06T15:45:05.347 に答える