問題タブ [security]
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.
python - Python からの PGP 署名?
Python アプリケーション内から PGP/GPG 署名を作成および検証する最も簡単な方法は何ですか?
subprocess を使用して pgp または gpg を呼び出して出力を解析できますが、外部プログラムをインストールする必要がない方法を探していました (私のアプリケーションはクロスプラットフォームの mac/windows/unix です)。
winforms - Winformsアプリケーションにパスワードを保存する方法は?
ユーザーのメールボックスのストレージクォータを照会するために作成していたwinformsアプリに、このようなコードがあります。
どのアプローチを試しても(のように)、 Reflectorを使用するか、実行可能ファイルのProcess Explorerの文字列タブを使用してパスワード( m_pwdSecureString
)を簡単に確認できます。
このコードをサーバーに配置したり、委任などのメカニズムを使用してセキュリティを強化したり、サービスアカウントに必要な権限のみを付与したりできることはわかっています。
誰かが、ハッカーにパスワードを明かさずに、ローカルアプリケーションにパスワードを保存するための合理的に安全な方法を提案できますか?
(照合目的のハッシュだけでなく)正確なパスワードを知る必要があるため、ハッシュはできません。暗号化/復号化メカニズムはマシンに依存しているため、機能していません。
.net - クレジット カードの暗号化に最適な .NET アルゴリズムはありますか?
.NETSystem.Security.Cryptography
名前空間には、クレジット カードの詳細を暗号化するために使用できる、かなり当惑するようなアルゴリズムのコレクションがあります。どちらがベストか?
比較的短い文字列の場合、明らかに安全である必要があります。
編集: 私は英国にいますが、3 桁の CVV 番号が決して保存されない限り、暗号化されたクレジット カードの詳細を保存しても問題ないことを理解しています。そして、すばらしい回答をありがとうございました。
security - フラッシュファイル (swf) を安全に埋め込むには?
ユーザーが独自の Flash アニメーションを投稿に埋め込めるようにしたいと考えています。通常、実際のファイルは無料の画像ホスティング サイトでホストされています。ユーザーがボタンをクリックして再生しない限り、実際にはフラッシュをロードしません(ページのロード時に何も自動再生されないようにします)。人々がフラッシュで本当に迷惑ながらくたを作ることができることは知っていますが、フラッシュアプリが視聴者に与える可能性のある重大な損害についての情報は見つかりません.
インターネットから任意のフラッシュ ファイルを埋め込むのは危険ですか? もしそうなら、ユーザーに無害なアニメーションを埋め込ませながら、有害なアプリを締め出すにはどうすればよいでしょうか?
編集:
私が収集できる限り、最も明白な脅威は、actionscript が悪意のあるサイトにリダイレクトすることです。
Adobeによると、 allowScriptAccess=neverおよびallowNetworking=noneを設定でき、swf はそれ自体の外部にアクセスできないようにする必要があります。 これですべての問題が解決しますか?
asp.net - リプレイ攻撃を防ぐにはどうすればよいですか?
これは、私が尋ねた別の質問に関連しています。要約すると、フォームが POST されたときに、認証やユーザーのセッションの維持のために Cookie に頼ることができない URL の特殊なケースがあります。彼らがログインしていることを知るために!
問題の解決策を思いついたと思いますが、具体化する必要があります。これが私が考えていることです。「username」という非表示のフォーム フィールドを作成し、その中にユーザーのユーザー名を暗号化して配置します。次に、フォームが POST すると、ブラウザーから Cookie を受信しなくても、非表示のフォーム フィールドを解読してユーザー名を取得できるため、ログインしていることがわかります。
私が見ることができる主要なセキュリティ上の欠陥は、リプレイ攻撃です。誰かがその暗号化された文字列を入手して、そのユーザーとして投稿するのを防ぐにはどうすればよいですか? SSL を使用してその文字列を盗みにくくすることができることはわかっています。暗号化キーを定期的にローテーションして、文字列が有効な時間を制限することもできますが、防弾を見つけたいと思っています。解決。誰にもアイデアはありますか?ASP.Net ViewState は再生を妨げますか? もしそうなら、彼らはどのようにそれをしますか?
編集:データベースに何も保存する必要のないソリューションを望んでいます。アプリケーションの状態は問題ありませんが、IIS の再起動に耐えられないか、Web ファームまたはガーデン シナリオでまったく機能しません。データベースなしでこれを保護することさえ可能であると確信していないので、今のところクリスの答えを受け入れています。しかし、誰かがデータベースに関係のない答えを思いついたら、私はそれを受け入れます!
security - コマンド ライン インジェクション攻撃の防止
現在、多数の外部ツールを実行するアプリケーションを構築しています。多くの場合、ユーザーがシステムに入力した情報をこれらのツールに渡す必要があります。
明らかに、これはセキュリティ上の大きな悪夢が待っています。
残念ながら、IDbCommand オブジェクトがデータベースに対して行うのと同じ種類のインジェクション攻撃に対する保護を提供しながら、コマンド ライン プログラムを実行する .NET Framework のクラスはまだ見つかっていません。
現在、非常に原始的な文字列置換を使用していますが、これはかなり不十分であると思われます。
コマンドライン インジェクション攻撃を防ぐために皆さんは何をしていますか? 非常に厳密で、文字のごく一部のサブセットのみを許可する正規表現を実装する予定ですが、もっと良い方法があるかどうか疑問に思っていました。
いくつかの説明:
- これらのツールの一部には、プログラミングできる API がありません。もしそうなら、私たちはこの問題を抱えていないでしょう.
- ユーザーは実行するツールを選択するのではなく、選択したツールが使用するメタデータを入力します (たとえば、著作権表示などのメタデータをターゲット ファイルに挿入します)。
flash - 改ざんされていないデータを Flash アプリからサーバーに渡しますか?
Flash を実行しているクライアントとサーバーの間でデータを安全に受け渡す方法を探しています。問題のデータは Flash アプリによって生成されます。この場合、ゲーム終了後のスコアです。サーバー上でデータが改ざんされていないことを確認したい。これを行うための良い方法は何ですか?
簡単な方法の 1 つは、データに対してハッシュなどの操作を実行し、そのハッシュをデータと共にサーバーに戻すことです。ただし、これは、クライアントのソース コードにアクセスできる人物によって簡単に破られます。
編集:ハッキングできないものは何もないことを認識していますが、できるだけ難しくしたいと考えています。公開鍵でデータを暗号化し、オプションでサニティチェックやゲームログで再計算を行う@jcnnghmのソリューションが最良の選択肢だと思います。SSL 暗号化も良い考えです。これにより、実際にサーバーに送り返されているものを解読するのが難しくなります。
.net - .Net 3.5、プロセス間で文字列を渡す最も安全な方法
C# (.Net 3.5) の子プロセスに SecureString (キャッシュされたパスフレーズ) を渡せるようにしたいのですが、最も安全な方法がわかりません。たとえば、SecureStringを通常の文字列に変換してコマンドライン引数として渡すと、その値はディスクページングを起こしやすくなる可能性があると思います. SecureString の使用について。
代わりに SecureString の IntPtr を渡すことはできますか? リスクを増やさずに名前付きパイプを使用できますか?
c# - Windows パスワードの保存
私は (.NET 3.5 を使用した C# で) 複数の Windows システムをポーリングしてさまざまなデータを取得する管理アプリケーションを作成しています。多くの場合、WMI を使用しますが、場合によっては、リモート レジストリを読み取ったり、ポーリングされたシステムでコマンドやスクリプトをリモートで実行したりする必要があります。このポーリングは定期的に行われます - 通常は毎晩ですが、より頻繁に (またはより少なく) 行われるように設定できます。したがって、投票は 10 分ごとに行うことも、1 か月に 1 回という頻度で行うこともできます。人間の介入なしに、自動化された方法で行われる必要があります。
これらの機能には、ポーリングされたシステムへの管理者レベルのアクセスが必要です。さて、ほとんどのユースケースではドメインが存在し、ポーリング アプリケーションはドメイン管理者 (または同等の) 権限を持つサービスとして実行できると予想しています。つまり、パスワードの保存について心配する必要はありません。アプリは、標準の Windows メカニズムを介してサービスのユーザー名/パスワードを定義します。
しかし、そこには常に少数の黒い羊がいます。このプログラムは、ドメイン以外の環境で実行される場合や、ポーリングされたシステムがドメインのメンバーではない場合に実行される場合があります。このような場合、ユーザー名とパスワードを定義して安全に保管し、そのシステムをポーリングするときにこのユーザー/パスのペアを呼び出す必要があります。したがって、覚えておいてください - この場合、作成されるプログラムは、認証システムにパスワードを送信するユーザーです。
使用時に平文に復号化する可逆ハッシュを使用する必要があるかどうか、またはハッシュのみを保存して再利用できるWindowsメカニズムがあるかどうかはわかりません。明らかに、2 番目のメカニズムが望ましいです。私は自分のプログラムがパスワードの平文の値を決して知らないか、可能な限り短い時間でそれを知っていることを望んでいます。
これを達成するためのスマートで安全な方法の提案が必要です。
ご覧いただきありがとうございます。
security - 安全な Web アプリケーションに関する重要なヒント
Web アプリケーションをより安全にするためのシンプルで効果的な簡単な手順を探しています。
安全な Web アプリケーションに関する重要なヒントは何ですか?また、それらはどのような種類の攻撃を阻止しますか?