問題タブ [sanitization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - 古典的なASPで入力をサニタイズする良い方法
仕事で古いプロジェクトを更新する必要があります。PHP スクリプトには慣れていますが、クラシック ASP の経験はありません。
- 使用すべき関数はありますか?
- いくつかの基本的な保護のための優れた機能を提供してもらえますか?
- aspにパラメータ化されたクエリのようなものはありますか?
ありがとう!
java - 文字列内のすべての < をブロックする正規表現
正規表現を作成して、すべてをブロック<
し>
、文字列で使用する場合を除き、 <select>.
そのための正規表現を提案できますか? で使用しますjavax.util.Pattern
。
インジェクション攻撃とリクエストと URL を介した XSS の試みをブロックするソリューションを作成しようとしています。そのために、いくつかの例外を除いて、特殊文字と文字シーケンスをブロックします。例外の 1 つは、許可する必要があることです<select>
(それらの間に select を含む山括弧)。これは、場合によっては正当にリクエストに渡されるためです。ただし、その他の山かっこの組み合わせはすべてブロックする必要があります。それが私の質問の理由です。
php - ファイル パスが特定のサブディレクトリ内にあることを確認するにはどうすればよいですか?
クエリ文字列を介して設定されたファイル パスが目的のサブディレクトリの外に出ないようにしたいと考えています。現在、次のことを確認しています。
/
ユーザーが絶対パスを指定できないようにするため、パスは " " で始まりません。..
ユーザーが目的のサブディレクトリの外にあるパスを指定できないようにするため、パスには " " が含まれていません。:
URL (つまり、"http://
"、"ftp://
" など)の使用を防ぐため、パスには " " が含まれていません。このスクリプトを Windows サーバーで実行した場合 (可能性は低い)、ドライブ指定子 (つまり "C:\
") で始まる絶対パスも防止されます。注: コロンが Unix ファイル名で有効な文字であることは承知していますが、ファイル名でコロンを使用することはありません。- パスが " " で始まっていません
\
。Windows サーバーで実行することに気が変わった場合に備えて、これにより Windows ネットワーク パス (つまり "\\someserver\someshare
") が指定されなくなります。繰り返しますが、バックスラッシュが有効な Unix ファイル名文字であることは承知していますが、ファイル名には使用しません。
これらのチェックは十分ですか?
バックグラウンド
ユーザーに表示するサンプル ソース ファイルへのパスを (クエリ文字列を介して) 取得する PHP スクリプトがあります。view_sample.php?path=accounting_app/report_view.php
それで、「 」や「 」のようなリンクを彼らに与えるかもしれませんview_sample.php?path=ajax_demo/get_info.js
。
スクリプトは基本的に次のようになります。
私の懸念は、悪意のあるユーザーが URL を見て「 」のようなことを試み、「サンプル」ディレクトリにないview_sample.php?path=../../database/connection_info.php
ファイルにアクセスしようとすることです。
上記で定義した 4 つのチェック (path_is_valid()
関数に実装される) は、悪意のあるユーザーをロックアウトするのに十分でしょうか? (また、相対パスを先頭に追加しているため、チェック 1、3、および 4 は基本的に無関係だと思いますが、これを行わなかった場合、チェックは十分でしょうか?)
.net - .NET での RSS 記述 HTML サニタイズ
RSS を使用するアプリケーションを作成したいと考えています。RSS フィードのアイテム説明に、画像、リンク、br などの一部のアイテムを HTML として表示できるようにしたいと考えています。車輪の再発明もしたくありません。正しいレベルの HTML だけを取り除くライブラリはありますか?
私が直面している問題は、phpBB から RSS フィードを生成しているため、投稿には既に br および a (リンク) タグが含まれていることです。ただし、ユーザーはスクリプト タグを投稿に貼り付けることができ、適切にエンコードされてページにテキストとして表示されます。
しかし、RSS リーダーで投稿を見ると、投稿内のすべての html が < および > などとしてエンコードされています。これにより、br タグと (less than)script(greaterthan) タグの区別が曖昧になります。どちらも & lt ; そして & gt;
これはもっと簡単なはずだと思いますが、明らかな何かが欠けているだけです...願っています。
php - テキストエリアに出力するときに、テキストエリアから受け取ったデータを適切にサニタイズするにはどうすればよいですか?
ユーザーはテキストエリアにテキストを入力します。その後、mySQL データベースに直接挿入されます。私はそれにトリム、htmlentities、mysql_real_escape_stringを使用し、魔法の引用符を有効にしています。そのデータをテキストエリアに出力するときに、どのようにサニタイズする必要がありますか?
ご協力いただきありがとうございます。私はこれを行う正しい方法についてあまり確信が持てませんでした...
php - 着信文字列からすべてのジャンクを削除するためのルーチン?
ユーザーがデータをコピーして入力フォームに貼り付けると、次のような文字が表示されることがあります。
don’t," 開始引用符および "終了引用符など ...
私はこのルーチンを使用して、Web フォームのほとんどの入力をサニタイズします (少し前に書きましたが、改善も求めています)。
上記のような文字がデータベースに保存されるのを本当に避けたいのですが、消毒ルーチンに正規表現の置換を追加する必要がありますか?
ありがとう、
-
ニコラス
windows - Windowsのログファイルからパスワードを削除するには?
配置スクリプト (.bat) があります。その一部では、他のプログラムを呼び出し、コマンド ラインでパスワードを送信する必要があります。デプロイ スクリプトの出力をファイルに記録します。問題は、パスワードもログに記録されることです。このログ ファイルをサニタイズする方法が必要です。
これを行う 1 つの方法は、パスワードを含む行をエコーしないことですが、パスワードを別の文字列に置き換えることをお勧めします。
これはサーバー(Windows 2008)上で行われるため、cygwin などをそのままインストールすることはできません。Windows の「find」コマンドが役立つと思いましたが、「/v」オプションを使用して行全体を省略するのが最善です。
UPD:いくつかの調査を行いましたが、PowerShell が最適な方法だと思います。パスワードは環境変数にあるため、それを読み取って置き換える方法を理解する必要があります。
language-agnostic - テキスト文字列内の (いたずらまたはナイス) URL またはリンクの検出
コメントなどのテキスト文字列内の Web サイト リンクを (正規表現またはヒューリスティックを使用して) 検出するにはどうすればよいですか?
目的は、スパムを防止することです。HTML が削除されているため、コピー アンド ペーストへの招待を検出する必要があります。 ほとんどのユーザーはページにうまくアクセスできないため、スパマーがリンクを投稿するのは経済的ではありません。ベスト プラクティスに関する提案、参考資料、またはディスカッションを希望します。
いくつかの目的:
- 適切な形式の URL などの簡単な成果 (
http://some-fqdn/some/valid/path.ext
) - プレフィックスなしの URL
http://
(つまり、有効な FQDN + 有効な HTTP パス) - その他の面白いビジネス
もちろん、スパムをブロックしていますが、同じプロセスを使用してテキストを自動リンクすることもできます。
アイデア
ここに私が考えていることがいくつかあります。
- コンテンツは母国語の散文なので、検出に満足できます
- " " をキャッチするために、最初にすべての空白を削除する必要があり
www .example.com
ますか? 一般的なユーザーは、自分でスペースを削除することを知っていますか、それともブラウザーが「何を意味するか」を実行して削除することを知っていますか? - おそらく、複数のパスがより良い戦略であり、次のスキャンがあります。
- 整形式の URL
- すべての非空白の後に「.」が続きます。任意の有効な TLD が続く
- 他に何か?
関連する質問
私はこれらを読み、現在ここに文書化されているため、必要に応じてこれらの質問で正規表現を参照することができます。
アップデートとまとめ
うわー、私はいくつかの非常に優れたヒューリスティックがここにリストされています! 私にとって、最高の費用対効果は、次の統合です。
- @Jon Bright の TLD を検出する手法 (優れた防御チョークポイント)
- これらの疑わしい文字列については、@capar に従って、ドットをドットに見える文字に置き換えます
- @Sharkey の下付きの · は、ドットのように見える良い文字です。(すなわち " · ")。· は単語境界でもあるので、さりげなくコピー&ペーストするのは難しいです。
これでスパマーの CPM は私のニーズに対して十分に低くなるはずです。「不適切としてフラグを立てる」ユーザーのフィードバックは、他のものをキャッチする必要があります。リストされている他のソリューションも非常に役立ちます。
- すべてのドット四角形を取り除きます(@Sharkeyのコメントは彼自身の答えです)
- 必須の非表示フィールドをフォームに挿入するクライアント側 Javascript に対する @Sporkmonger の要件。
- URL サーバー側に ping を実行して、それが Web サイトであるかどうかを確認します。(おそらく、@Nathan のように、SpamAssassin または別のベイジアン フィルターを介して HTML を実行できます。)
- Chrome のスマート アドレス バーのソースを調べて、Google がどのような巧妙なトリックを使用しているかを確認します
- スパム/マルウェア検出のために OWASP AntiSAMY またはその他の Web サービスを呼び出します。
c++ - C++ での HTML サニタイズ
HTML を含む可能性のある文字列をサニタイズすることのみを目的とした、利用可能な C++ (またはおそらく C) 関数/クラス/ライブラリはありますか?
C# や Web アプリケーションでよく使用される他の言語でサニタイズするためのソース コードはたくさんありますが、C++ では何も見つかりません。
利用可能な関数が見つからない場合は、独自の関数を実装しようとしますが、十分にテストされたソリューションの方がはるかに優れていると思います。
編集>私のニーズに関するいくつかの精度:
C++ アプリケーションでキーボードからテキスト入力を取得しています。次に、javascript 関数呼び出しでパラメーターとして使用する前にサニタイズする必要があります。そのJavaScriptは、ライブラリ(Navi)を介して表示するテクスチャで(Chromiumを介して)自動的にレンダリングされるロードされたhtmlページで実行されます。したがって、私が使用する JavaScript 関数は、指定されたテキストを取得し、テキストの周りに P タグを配置して、次のように div に挿入します。
この関数であれ、別の関数であれ、Web ページに送信する前にテキストをサニタイズする必要があります。Chromiumに入力する前にサニタイズする必要があります。