タグ付けされた質問 「security」

アプリケーションのセキュリティとソフトウェアに対する攻撃に関するトピック。このタグを単独で使用しないでください。あいまいになる可能性があります。質問が特定のプログラミングの問題に関するものでない場合は、代わりにInformation Security SEで質問することを検討してください:https://security.stackexchange.com

9
PHP文字列をどのように暗号化および復号化しますか?
つまり、 Original String + Salt or Key --> Encrypted String Encrypted String + Salt or Key --> Decrypted (Original String) 多分次のようなもの: "hello world!" + "ABCD1234" --> Encrypt --> "2a2ffa8f13220befbe30819047e23b2c" (may be, for e.g) "2a2ffa8f13220befbe30819047e23b2c" --> Decrypt with "ABCD1234" --> "hello world!" PHPでは、これをどのように行うことができますか? を使用しようとしましたCrypt_Blowfishが、うまくいきませんでした。

8
SecureStringはC#アプリケーションで実用的ですか?
ここで私の仮定が間違っている場合は、遠慮なく訂正してください。しかし、私が尋ねている理由を説明させてください。 MSDNから取得SecureString: 秘密にしておくべきテキストを表します。テキストは使用時にプライバシー保護のために暗号化され、不要になるとコンピューターのメモリから削除されます。 私はそれがでパスワードやその他の個人情報保管するための完全な意味を成し、これを取得SecureStringオーバーをSystem.String、あなたはどのように制御することができますので、それは実際にメモリに格納されている場合、理由System.String: 両方が不変であり、不要になった場合、ガベージコレクションをプログラムでスケジュールすることはできません。つまり、インスタンスは作成後は読み取り専用であり、インスタンスがコンピューターのメモリから削除される時期を予測することはできません。したがって、Stringオブジェクトにパスワード、クレジットカード番号、個人データなどの機密情報が含まれている場合、アプリケーションがコンピューターのメモリからデータを削除できないため、使用後に情報が漏洩する可能性があります。 ただし、GUIアプリケーション(たとえば、sshクライアント)の場合、SecureString はから構築する必要があり System.Stringます。すべてのテキストコントロールは、基礎となるデータ型として文字列を使用します。 つまり、これは、ユーザーがキーを押すたびに、そこにあった古い文字列は破棄され、パスワードマスクを使用していても、テキストボックス内の値を表す新しい文字列が作成されることを意味します。また、これらの値のいずれがメモリから破棄されるか、または破棄されるかどうかを制御することはできません。 次に、サーバーにログインします。何だと思う?認証のために接続を介して文字列を渡す必要があります。それではSecureString、System.String...に変換してみましょう。ガベージコレクションを強制的に実行する(またはバッファに0を書き込む)方法がないヒープ上に文字列があります。 私のポイントはある:あなたが何をすべきかに関係なく、線に沿ってどこか、SecureStringされに行くに変換するSystem.String(ガベージコレクションの任意の保証なし)いくつかの点で、ヒープ上の最低が存在でそれをしますつまり、。 私のポイントではありません:ssh接続への文字列の送信を回避する方法、またはコントロールに文字列を格納させる(カスタムコントロールを作成する)方法を回避する方法があるかどうか。この質問では、「ssh接続」を「ログインフォーム」、「登録フォーム」、「お支払いフォーム」、「食品-あなたがフィード-あなたの子犬-しかし、あなたの子供でないフォーム」に置き換えることができます。等 それでは、SecureString実際に使用することが実際に役立つのはどの時点ですか? System.Stringオブジェクトの使用を完全に根絶するために、余分な開発時間を費やす価値はありますか? 全体のポイントであるSecureString、単に時間の量削減するSystem.Stringヒープ上では、(物理的なスワップファイルに移動し、そのリスクを低減しますか)? 攻撃者は、すでにヒープ検査のための手段を持っている場合、その後、彼は最も可能性のいずれか(A)は、既にキーストロークを読むための手段を有している、または(B)、すでに物理的にマシンを持っている ...だからが使用してしまうSecureStringになってから彼を防ぐためにとにかくデータ? これは単に「あいまいさによるセキュリティ」ですか。 質問を厚くしすぎていると申し訳ありませんが、好奇心が私をより良くしました。私の質問の一部またはすべてに遠慮なく答えてください(または私の仮定が完全に間違っていることを教えてください)。:)
224 c#  security 

6
SHA512対BlowfishおよびBcrypt [終了]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 ハッシュアルゴリズムを調べていますが、答えが見つかりませんでした。 BcryptはBlowfishを使用 フグはMD5よりも優れています Q:BlowfishはSHA512より優れていますか? ありがとう。 更新: ハッシュと暗号化の違いを理解していることを明確にしたいと思います。この方法で質問するように私を促したのはこの記事です。著者はbcryptを「適応型ハッシュ」と呼んでいます。 bcryptはBlowfishに基づいているので、Blowfishはハッシュアルゴリズムであると思われました。答えが指摘したようにそれが暗号化であるならば、それはこの記事に場所を置くべきではないように私には思われます。さらに悪いことに、彼はbcryptが最高だと結論しています。また、私を混乱させているのは、phpassクラス(私が信じているパスワードハッシュに使用)がbcrypt(つまり、フグ、つまり暗号化)を使用していることです。皆さんが私に言っているこの新しい情報(ふぐは暗号化です)に基づいて、このクラスは間違っているようです。何か不足していますか?

5
SSL証明書はどのように検証されますか?
SSL証明書を安全に検証するために必要な一連の手順は何ですか?私の(非常に限られた)理解では、httpsサイトにアクセスすると、サーバーが証明書をクライアント(ブラウザー)に送信し、ブラウザーはその証明書から証明書の発行者情報を取得し、それを使用して発行者に連絡し、何らかの形で比較します。有効性の証明書。 これはどのように正確に行われますか? プロセスは、中間者攻撃の影響を受けないようにしますか? ランダムな人物が中間者攻撃で使用するために独自の検証サービスをセットアップして、すべてが「安全」に見えるようにするのを妨げているのは何ですか?


18
人々がFlashゲームのPHPベースのハイスコア表をハッキングするのを止める最善の方法は何ですか
スコアの上限がなく、動きを再生するなどしてサーバー上のスコアを確認する方法がないアクションゲームについて話している。 私が本当に必要としているのは、Flash / PHPで可能な最も強力な暗号化と、私のFlashファイル以外からPHPページを呼び出されないようにする方法です。私は過去にいくつかの簡単な方法を試して、単一のスコアに対して複数の呼び出しを行い、チェックサム/フィボナッチシーケンスなどを完了し、Amayeta SWF EncryptでSWFを難読化しましたが、最終的にすべてハッキングされました。 - StackOverflowのレスポンスのおかげで私は今、アドビシステムズ社からいくつかのより多くの情報を発見したhttp://www.adobe.com/devnet/flashplayer/articles/secure_swf_apps_12.htmlとhttps://github.com/mikechambers/as3corelib -私は私が考えます暗号化に使用できます。ただし、これでCheatEngineを回避できるかどうかわかりません。 AS2とAS3の両方に最適なソリューションが異なる場合、それらを知る必要があります。 主な問題はTamperDataやLiveHTTPヘッダーなどの問題のようですが、CheatEngineなどのより高度なハッキングツールもあることを理解しています(Mark Websterに感謝)


7
java.util.Randomとjava.security.SecureRandomの違い
私のチームはランダムトークンを生成するサーバー側のコード(Javaで)を渡されましたが、それについて質問があります- これらのトークンの目的はかなり機密性が高く、セッションID、パスワードリセットリンクなどに使用されます。したがって、誰かがトークンを推測したり、ブルートフォースで実行したりしないように、暗号的にランダムにする必要があります。トークンは「長い」ため、64ビット長です。 コードは現在、java.util.Randomクラスを使用してこれらのトークンを生成しています。ドキュメントのためのjava.util.Random明確では次のように述べています: java.util.Randomのインスタンスは暗号的に安全ではありません。代わりにSecureRandomを使用して、セキュリティ上重要なアプリケーションで使用するための暗号的に安全な疑似乱数ジェネレータを取得することを検討してください。 ただし、コードが現在使用している方法java.util.Randomはこれです。クラスをインスタンス化java.security.SecureRandomし、SecureRandom.nextLong()メソッドを使用して、java.util.Randomクラスのインスタンス化に使用されるシードを取得します。次に、java.util.Random.nextLong()メソッドを使用してトークンを生成します。 だから今私の質問-がjava.util.Random使用してシードされていることを考えると、それはまだ安全java.security.SecureRandomですか?java.security.SecureRandomトークンの生成にのみ使用するようにコードを変更する必要がありますか? 現在、コードシードRandomは起動時に1回です

22
PHPでランダムなパスワードを生成する
私はphpでランダムなパスワードを生成しようとしています。 しかし、すべての 'a'を取得しており、戻り値の型は配列型であり、文字列にしたいと考えています。コードを修正する方法に関するアイデアはありますか? ありがとう。 function randomPassword() { $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789"; for ($i = 0; $i < 8; $i++) { $n = rand(0, count($alphabet)-1); $pass[$i] = $alphabet[$n]; } return $pass; }

10
この新しいASP.NETのセキュリティの脆弱性はどのくらい深刻ですか、どうすれば回避できますか?
ASP.NETで新しく発見されたセキュリティの脆弱性についてネットで読んだところです。詳細はこちら。 問題は、ASP.NETがAES暗号化アルゴリズムを実装して、ユーザーセッション中に情報を保存するためにこれらのアプリケーションが生成するCookieの整合性を保護する方法にあります。 これは少し曖昧ですが、ここにはもっと恐ろしい部分があります: 攻撃の最初の段階では数千の要求がかかりますが、成功して攻撃者が秘密鍵を取得すると、それは完全に隠蔽されます。必要な暗号化の知識は非常に基本的です。 全体として、私はこれが本当にそれほど深刻であるかどうかを知るのに十分なセキュリティ/暗号の主題に精通していません。 したがって、すべてのASP.NET開発者が、ASP.NET Webサイトを数秒で所有できるこの手法を恐れる必要があります。でしょうか。 この問題は平均的なASP.NET開発者にどのように影響しますか?影響はありますか?実際には、この脆弱性の影響は何ですか?そして最後に、この脆弱性を防ぐいくつかの回避策はありますか? ご回答ありがとうございます! 編集:私が得た応答を要約しましょう したがって、これは基本的に「パディングオラクル」タイプの攻撃です。@Sriは、このタイプの攻撃が何を意味するのかについての素晴らしい説明を提供しました。問題についての衝撃的なビデオはここにあります! この脆弱性の深刻度について:はい、確かに深刻です。これにより、攻撃者はアプリケーションのマシンキーを知ることができます。したがって、彼はいくつかの非常に望ましくないことを行うことができます。 アプリのマシンキーを所持している場合、攻撃者は認証Cookieを復号化できます。 それよりもさらに悪いことに、彼は任意のユーザーの名前で認証Cookieを生成できます。したがって、彼はサイト上の誰としても登場することができます。アプリケーションは、あなた自身またはあなたの名前で認証Cookieを生成したハッカーを区別できません。 また、これにより、セッションCookieを復号化(および生成)することもできますが、これは前のものほど危険ではありません。 それほど深刻ではありません:彼はページの暗号化されたViewStateを復号化できます。(ViewStateを使用して信頼できるデータを保存する場合は、とにかくこれを行うべきではありません!) かなり予想外:マシンキーの知識を使用すると、攻撃者がダウンロードできるものも正常にダウンロードできないことを、Webアプリケーションから任意のファイルを!(Web.Configなどを含む) これは、問題を解決せずに Webアプリケーションの一般的なセキュリティの向上に役立つ、私が得た一連の優れた実践例です。 保護された構成で機密データを暗号化できます HTTPのみのCookieを使用する DoS攻撃を防ぐ さて、この問題に焦点を当てましょう。 スコット・ガスリーは彼のブログにそれについてのエントリーを公開しました 脆弱性に関するScottGuのFAQブログ投稿 脆弱性に関するScottGuの更新 マイクロソフトはそれについてのセキュリティ勧告を持っています 脆弱性を理解する 脆弱性に関する追加情報 ソリューション customErrorsを有効にして、すべてのエラーがリダイレクトされる単一のエラーページを作成します。はい、404ですら。(ScottGuは、この攻撃には404と500を区別することが不可欠であると述べています。)また、ランダムな遅延を発生させるコードをに入れApplication_Errorたり、Error.aspx入れたりします。(乱数を生成し、Thread.Sleepを使用してその間スリープします。)これにより、攻撃者はサーバーで何が起こったかを正確に判断できなくなります。 3DESに戻すことを推奨する人もいます。理論的には、AESを使用しない場合、AES実装のセキュリティの弱点に遭遇することはありません。結局のところ、これはまったくお勧めできません。 他のいくつかの考え 思われていない 、誰もがこの問題を回避するには十分に良いと考えています。 私の質問に答えてくれたみんなに感謝します。この問題だけでなく、Webセキュリティ全般について多くのことを学びました。@Mikaelの回答を承認済みとしてマークしましたが、他の回答も非常に役に立ちます。

6
AngularJSは拡張ページでURLを「安全でない」に変更します
アプリのリストでAngularを使用しようとしていますが、それぞれがアプリを詳細に表示するためのリンクです(apps/app.id): <a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a> これらのリンクの1つをクリックするたびに、ChromeはURLを次のように表示します unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id どこunsafe:から来たのですか?

5
CASまたはOAuthを使用したSSO?
シングルサインオンにCASプロトコルまたはOAuth +一部の認証プロバイダーを使用する必要があるのか​​と思います。 シナリオ例: ユーザーが保護されたリソースにアクセスしようとしましたが、認証されていません。 アプリケーションはユーザーをSSOサーバーにリダイレクトします。 認証されている場合、ユーザーはSSOサーバーからトークンを取得します。 SSOは元のアプリケーションにリダイレクトします。 元のアプリケーションは、SSOサーバーに対してトークンをチェックします。 トークンに問題がなければ、アクセスが許可され、アプリケーションはユーザーIDを認識します。 ユーザーはログアウトを実行し、接続されているすべてのアプリケーションから同時にログアウトされます(シングルサインアウト)。 私が理解している限り、それはまさにCASが発明したものです。CASクライアントは、認証サービスを使用するためにCASプロトコルを実装する必要があります。今、私はクライアント(コンシューマー)サイトでCASまたはOAuthを使用することを考えています。OAuthはCASのその部分の代替品ですか?新しい事実上の標準としてのOAuthを優先すべきですか?ユーザー名/パスワード、OpenID、TLS証明書などのさまざまな方法をサポートするCASの認証部分の使いやすい(Sun OpenSSOではありません!)置き換えはありますか? 環境: さまざまなアプリケーションがSSOサーバーの認証に依存し、セッションのようなものを使用する必要があります。 アプリケーションは、GUI Webアプリケーションまたは(REST)サービスにすることができます。 SSOサーバーは、ユーザーIDを提供する必要があります。これは、中央のユーザーインフォメーションストアからロールや電子メールなどのユーザーに関する詳細情報を取得するために必要です。 シングルサインアウトが可能である必要があります。 ほとんどのクライアントはJavaまたはPHPで記述されています。 OAuthの後継となる可能性のあるWRAPを発見しました。これは、Microsoft、Google、Yahooによって指定された新しいプロトコルです。 補遺 OAuthは、SSOを実装するために使用することもできますが、OpenIDのようなSSOサービスと一緒にのみ使用できるように認証用に設計されていないことを知りました。 OpenIDは「新しいCAS」のようです。CASにはOpenIDが欠落する機能(シングルサインアウトなど)がいくつかありますが、特定のシナリオで欠落しているパーツを追加することは難しくありません。OpenIDは広く受け入れられていると思います。OpenIDをアプリケーションまたはアプリケーションサーバーに統合することをお勧めします。CASもOpenIDをサポートしていることは知っていますが、CASはOpenIDを必要としないと思います。

11
安全なWebサービス:REST over HTTPS vs SOAP + WS-Security。どちらが良いですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 この質問を改善する 私は決してセキュリティの専門家ではありませんが、RESTスタイルのWebサービスを作成することを好みます。 安全に送信するデータを必要とする新しいサービスを作成する場合。どのアプローチがより安全であるかについての議論に入りました-HTTPSを使用したRESTまたはWS-Securityを使用したSOAP WS。 すべてのWebサービス呼び出しにHTTPSを使用でき、このアプローチは安全であるという印象を受けています。私がそれを見る方法は、「HTTPSが銀行や金融のWebサイトに十分であるなら、私には十分です」です。繰り返しますが、私はこの分野の専門家ではありませんが、これらの人々はこの問題についてかなり熱心に考え、HTTPSに慣れていると思います。 同僚は反対し、SOAPとWS-Securityが唯一の方法であると述べています。 Webはこれの全面的なようです。 たぶん、ここのコミュニティはそれぞれの長所と短所を比較検討できるでしょうか?ありがとう!

11
.NETでSecureStringが必要になるのはいつですか?
.NETのSecureStringの目的を理解しようとしています。MSDNから: System.Stringクラスのインスタンスは不変であり、不要になったときにプログラムでガベージコレクションのスケジュールを設定することはできません。つまり、インスタンスは作成後は読み取り専用であり、インスタンスがコンピューターのメモリから削除される時期を予測することはできません。したがって、Stringオブジェクトにパスワード、クレジットカード番号、個人データなどの機密情報が含まれている場合、アプリケーションがコンピューターのメモリからデータを削除できないため、使用後に情報が漏洩する可能性があります。 SecureStringオブジェクトは、テキスト値を持つという点でStringオブジェクトに似ています。ただし、SecureStringオブジェクトの値は自動的に暗号化され、アプリケーションがそれを読み取り専用としてマークするまで変更でき、アプリケーションまたは.NET Frameworkガベージコレクターによってコンピューターのメモリから削除できます。 SecureStringのインスタンスの値は、インスタンスが初期化されるとき、または値が変更されるときに自動的に暗号化されます。アプリケーションは、MakeReadOnlyメソッドを呼び出すことにより、インスタンスを不変にレンダリングし、それ以上の変更を防ぐことができます。 自動暗号化は大きなメリットですか? そして、なぜ私はただ言うことができないのですか? SecureString password = new SecureString("password"); の代わりに SecureString pass = new SecureString(); foreach (char c in "password".ToCharArray()) pass.AppendChar(c); SecureStringのどの側面が欠けていますか?

13
JavaScript:クライアント側とサーバー側の検証
クライアント側とサーバー側のどちらの検証を行う方が良いですか? 私たちの状況では、 jQueryおよびMVC。 ビューとコントローラーの間で受け渡すJSONデータ。 私が行う検証の多くは、ユーザーが入力したデータを検証することです。たとえば、このkeypressイベントを使用して、テキストボックス内の文字を防止し、最大文字数を設定します。数値は範囲内にあります。 より良い質問は、クライアント側よりもサーバー側の検証を行うことのメリットは何でしょうか? 素晴らしい答えをみんなに。私たちが持っているウェブサイトはパスワードで保護されており、小規模なユーザーベース(50未満)向けです。JavaScriptを実行していない場合は、忍者を送信します。しかし、もし私たちがすべての人のためにサイトを設計しているなら、私は両側で検証を行うことに同意します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.