16

JavaScript でnavigator()オブジェクトについて読んでいるときに、 taintEnabled()関数の説明に出くわしました。これは、「データ汚染」と呼ばれるものを参照して、同様の機能と同様taint()に機能します。untaint()

net と StackOverflow をグーグルで検索すると、Perl 言語への言及の可能性が示されていますが、JavaScript については何も示されていません。データテイニングとは何ですか?また、これらの機能をどのように使用するのですか?

4

3 に答える 3

14

データ汚染 (または汚染チェック) は、ユーザー入力データに汚染フラグが立てられる言語機能であり、このフラグは、この入力から派生したすべてのデータに伝播します。その結果、コードはランタイム アサーションを実装して、汚染されたデータを使用してセキュリティ クリティカルなコードが呼び出されないようにすることができます (つまり、SQLi、XSS タイプの攻撃を防ぎます)。

Netscape は v3 と v4 でブラウザーに実装しましたが、悲しいことに他の場所でサポートが実現することはありませんでした。

于 2014-04-11T01:19:16.843 に答える
1

前述のように、データ汚染は長い間忘れられ、推奨されていない手法およびトピックであるように思われるため、データ汚染に関する情報源はインターネット上にあまりありません。しかし、 findmeat.orgでこれに関する興味深い読み物を見つけました。メソッドについては、次のNavigator.taintEnabled()ように述べています(さまざまな部分が引用され、一部のテキストは短縮されています):

データ汚染サポートは、データをサーバーに送り返す短命の手段でした。セキュリティへの影響が機能しなくなり、データ汚染のアイデア全体が廃止されました。この機能は JavaScript バージョン 1.2 で削除されました。このメソッドは、スクリプトのクラッシュを防ぐためにのみサポートされています。この機能は非常に非推奨であり、将来実行時例外が発生することが予想されます。将来の実行時エラーを防ぐために、それを試して削除する必要があります。

現在、この機能をサポートしているブラウザーはほとんどなく (同様の機能についても言及されています)、どのような状況でも使用すべきではないようです。ブラウザがこれを実装している場合でも、このメソッドに対して常に値 false を返す必要があります。

于 2012-07-17T10:34:53.417 に答える