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

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

6
アプリがバックグラウンドになったときにAndroidがスクリーンショットを撮らないようにするにはどうすればよいですか?
現在作成しているアプリには、セキュリティ上の理由から、アプリがバックグラウンドにプッシュされるときにOSがアプリのスクリーンショットを撮らないようにする必要があるという要件があります。これにより、アプリを切り替えるときに最後にアクティブだった画面を表示できなくなります。 この機能をアプリケーションクラスのonPauseメソッドに組み込む予定ですが、最初にこの機能を実現する方法を見つける必要があります。 それで、これを修正する方法の手掛かりを持つ誰かがいますか?

4
ベストプラクティス:パスワードをソルトアンドペパーリングしますか?
私が行っていることは、実際にはパスワードをソルト処理するのではなく、それらをペパーリングすることであることがわかったディスカッションに出会い、それ以来、次のような関数で両方を実行し始めました。 hash_function($salt.hash_function($pepper.$password)) [multiple iterations] 選択したハッシュアルゴリズムを無視します(これはソルト&ペッパーの説明であり、特定のアルゴリズムではありませんが、安全なアルゴリズムを使用しています)、これは安全なオプションですか、それとも何か別のことをする必要がありますか?用語に不慣れな方のために: 塩は、通常、それが不可能なパスワードをクラックするハッシュテーブルを使用するようにするために設計されたデータベース内の文字列を格納し、ランダムに生成された値です。各パスワードには独自のソルトがあるため、パスワードを解読するためにすべて個別にブルートフォースする必要があります。ただし、ソルトはパスワードハッシュとともにデータベースに格納されるため、データベースのセキュリティが侵害されると、両方が失われます。 唐辛子は秘密であることが意図されている(通常は、アプリケーションのソースコードにハードコードされた)データベースとは別に格納されているサイト全体の静的な値です。これは、データベースが侵害されてもアプリケーション全体のパスワードテーブルがブルートフォース可能にならないようにするために使用されます。 不足しているものはありますか?ユーザーのセキュリティを保護するために、パスワードをソルト&ペッパーリングするのが最良のオプションですか?この方法で行うことには、潜在的なセキュリティ上の欠陥はありますか? 注:説明のために、アプリケーションとデータベースは別々のマシンに格納されていると仮定します。パスワードは共有しないでください。したがって、データベースサーバーの違反が、アプリケーションサーバーの違反を自動的に意味するわけではありません。

5
PHPセッションの修正/ハイジャック
PHP セッションの修正とハイジャック、およびこれらの問題を防ぐ方法について、もっと理解しようとしています。Chris ShiflettのWebサイトで次の2つの記事を読んでいます。 セッション固定 セッションハイジャック しかし、私が物事を正しく理解しているかどうかはわかりません。 セッションの固定を防ぐには、session_regenerate_id(true)を呼び出すだけで十分です。誰かが正常にログインした後?私はそれを正しく理解していると思います。 また、セッションの乗っ取りを防ぐために$ _GETを介してURLで渡されるトークンを使用することについても話します。これはどのように正確に行われますか?誰かがログインしてトークンを生成してセッション変数に格納すると、各ページでそのセッション変数を$ _GET変数の値と比較すると思いますか? このトークンを変更する必要があるのは、セッションごと、またはページの読み込みごとに1回だけですか? また、URLで値を渡さなくてもハイジャックを防止できる優れた方法ですか?これはかなり簡単になります。

2
Google+ +1ウィジェットはどのようにしてiframeから抜け出しますか?
どういうわけか、Google +プラスワンウィジェットにカーソルを合わせる<iframe>と、それが含まれている要素よりも明らかに大きいツールチップタイプの取引が導入される可能性があります。これを確認するためにDOMを調べました。* そう: 何?どうやって!? 悪意を持って使用された場合、これはクリックジャックの大きな機会ではありませんか?(これらのソーシャルウィジェットに対してMITMを実行している人を想像してください!) *更新:私が見たのは、tooltip-yメッセージが 2番目に動的に作成されたというものiframeでした。

9
httpsサイトのiframe内でhttpコンテンツを許可する方法
いくつかのHTMLをiframeに読み込みますが、参照されているファイルがhttpsではなくhttpを使用している場合、次のエラーが発生します。 [ブロック] {current_pagename}のページで、{referenced_filename}の安全でないコンテンツが実行されました これをオフにする方法またはそれを回避する方法はありますか? iframeにはsrc属性がなく、コンテンツは次を使用して設定されます。 frame.open(); frame.write(html); frame.close();
145 html  security  http  iframe  https 

3
クロスドメインフォームのPOST
私はこのトピックに関する記事や投稿(SOを含む)をすべて見てきましたが、主流のコメントは、同一生成元ポリシーがドメイン間でフォームPOSTを防止するというものです。同じ起源のポリシーがフォームの投稿に適用されないことを誰かが示唆しているのを見た唯一の場所はここです。 もっと「公式」または正式な情報源からの回答を希望します。たとえば、同一生成元がフォームPOSTにどのように影響するか、または影響しないかを扱うRFCを誰かが知っていますか? 説明:GETまたはPOSTを構築して任意のドメインに送信できるかどうかは尋ねていません。私は尋ねています: Chrome、IE、またはFirefoxでドメイン「Y」のコンテンツがドメイン「X」にPOSTを送信できる場合 POSTを受信するサーバーが実際にフォームの値をまったく表示する場合。私がこれを言ったのは、オンラインディスカッションの大多数がテスターがサーバーが投稿を受け取ったと記録しているが、フォームの値はすべて空である/取り除かれているためです。 公式ドキュメント(RFCなど)は、(ブラウザが現在実装しているものに関係なく)予想される動作を説明しています。 ちなみに、同一生成元がフォームのPOSTに影響を与えない場合は、偽造防止トークンが必要な理由がいくらか明らかになります。攻撃者が単純にHTTP GETを発行して偽造防止トークンを含むフォームを取得し、同じトークンを含む不正なPOSTを作成する可能性があると信じるのは簡単すぎるため、「やや」と言います。コメント?

11
Androidゲームがハッキングされ続ける[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 この質問を改善する 私たちはこれを数回経験しましたが、私たちはゲームを(安価で)公開し、誰かがそれをハッキングしてミラーに置いています。すべてのアプリにGoogleアラートを設定しているため、ハッキングを行っているユーザーが毎日通知されます。これまでのところ、Googleの提案に従ってライセンスサービスを実装しました。ソルトは、一意のデバイスIDでライセンスが開始されるたびにランダムに作成されます。アプリケーションが初めて起動されたときに、チェックサービスを1回実行します。次に、キーの512文字のハッシュと、そこからSharedPreferencesで比較される格納された値を生成します。 今、私は一度チェックすることがおそらくアプリケーションがブロックされている場所であることを知っています。私たちのバイトコードは、チェックを開始する行なしで調べられ、再コンパイルされた可能性が高いです。 ここからは、コードが以前に壊れているのを見て、コードを難読化したくありません。私はもう少ししっかりしたものを望んでおり、これを適切に行う方法も学びたいです。ハッキングされたバージョンを探す人は2%だけなので、この時点ではお金を稼ぐよりも学習に興味があります。 これまでのところ、自分で、ゲームのいくつかの起動領域に配置された乱数ジェネレータを考え出しました。開始されると(たとえば、50回に1回)、ライセンスがチェックされます。クラッカーが各ケースを排除し、コンパイルし、排除し、コンパイルする必要があるため、ハッキングが難しくなることはわかっています。しかし、この方法はまだ解読可能です...それで、皆さんは何を提案しますか?繰り返しますが、私はこのセキュリティプロセスに本当に興味があります。したがって、教育して、これを難読化やタイムスタンプに基づく定期的なチェックについての議論に変えないでください。 ありがとう

11
Spring Securityを使用した単体テスト
私の会社では、Spring MVCを評価して、次のプロジェクトの1つで使用するかどうかを決定しています。これまでのところ、私は今まで見たことを気に入っています。今は、Spring Securityモジュールを調べて、それが私たちが使用できる/すべきかどうかを判断しています。 私たちのセキュリティ要件はかなり基本的なものです。ユーザーは、サイトの特定の部分にアクセスできるように、ユーザー名とパスワードを提供できる必要があります(アカウントに関する情報を取得するなど)。サイトには、匿名ユーザーにアクセスを許可するページ(FAQ、サポートなど)がいくつかあります。 私が作成しているプロトタイプでは、認証されたユーザーのSessionに "LoginCredentials"オブジェクト(ユーザー名とパスワードのみが含まれています)を格納しています。一部のコントローラは、このオブジェクトがセッションにあるかどうかを確認して、たとえばログインしたユーザー名への参照を取得します。私はこの自家製ロジックを代わりにSpring Securityで置き換えようとしています。これは、「ログインしたユーザーをどのように追跡するのか」を削除するという素晴らしい利点があります。そして「ユーザーをどのように認証するのか?」私のコントローラー/ビジネスコードから。 Spring Securityは、アプリ内のどこからでもユーザー名/プリンシパル情報にアクセスできるようにする(スレッドごとの)「コンテキスト」オブジェクトを提供しているようです... Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); ある意味、このオブジェクトは(グローバル)シングルトンなので、これは非常に非Springのようです。 私の質問はこれです:これがSpring Securityで認証されたユーザーに関する情報にアクセスする標準的な方法である場合、ユニットテストで必要なときにユニットテストで利用できるように、AuthenticationオブジェクトをSecurityContextに注入するための受け入れられた方法は何ですか?認証済みユーザー? これを各テストケースの初期化メソッドに関連付ける必要がありますか? protected void setUp() throws Exception { ... SecurityContextHolder.getContext().setAuthentication( new UsernamePasswordAuthenticationToken(testUser.getLogin(), testUser.getPassword())); ... } これは過度に冗長に見えます。もっと簡単な方法はありますか? SecurityContextHolderオブジェクト自体は、非常に非春のように思えます...

9
パスワードのハッシュと暗号化の違い
この質問に現在投票されているトップは次のように述べています: セキュリティ関連ではありますが、それほどセキュリティの問題ではないもう1つの問題は完全であり、パスワードのハッシュと暗号化の違いを理解するのに失敗しています。最も一般的に見られるのは、プログラマーが安全でない「パスワードを思い出させる」機能を提供しようとしているコードです。 この違いは正確には何ですか?ハッシュは暗号化の一種だといつも思っていました。投稿者が言及している危険な機能とは何ですか?

11
古いCコンパイラの使用はセキュリティリスクですか?
私たちには、誰も気にしないいくつかのビルドシステムが本番環境にあり、これらのマシンはGCC 3やGCC 2のようなGCCの古いバージョンを実行しています。 そして私はそれをより新しいものにアップグレードするよう経営陣を説得することはできません:彼らは「壊れていなければそれを修正しないでください」と言います。 私たちは非常に古いコードベース(80年代に書かれた)を維持しているため、このC89コードはこれらのコンパイラーで問題なくコンパイルされます。 しかし、私はこれらの古いものを使うのが良い考えだとは思いません。 私の質問は: 古いCコンパイラを使用すると、コンパイルされたプログラムのセキュリティが低下する可能性がありますか? 更新: 同じコードがVisual Studio 2008 for Windowsターゲットによってビルドされ、MSVCはまだC99またはC11をサポートしていません(新しいMSVCがサポートしているかどうかはわかりません)。最新のGCCを使用してLinuxボックスでビルドできます。したがって、新しいGCCをドロップするだけで、おそらく以前と同じように正常にビルドされます。
139 c  security  gcc 

18
単一引用符をエスケープし、単一引用符でユーザー入力を囲むことで、SQLインジェクションから保護できますか?
ユーザー入力を含むクエリを作成する場合、パラメーター化されたSQLクエリがユーザー入力をサニタイズするための最適な方法であることを理解していますが、ユーザー入力を取得して一重引用符をエスケープし、文字列全体を一重引用符で囲むと何が問題になるのでしょうか。これがコードです: sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'" ユーザーが入力する一重引用符はすべて二重一重引用符に置き換えられます。これにより、ユーザーは文字列を終了できなくなります。そのため、セミコロンやパーセント記号など、ユーザーが入力する可能性のある他のすべてはすべて文字列の一部となり、コマンドの一部として実際には実行されません。 私たちはMicrosoft SQL Server 2000を使用しています。これは、単一引用符が唯一の文字列区切り文字であり、文字列区切り文字をエスケープする唯一の方法であると私は考えているため、ユーザーが入力するものを実行する方法はありません。 これに対してSQLインジェクション攻撃を仕掛ける方法は見当たらないが、もしこれが私のように弾丸であるとすれば、他の誰かがすでにそれを考えていて、それが一般的な慣行になるだろう。 このコードの何が問題になっていますか?このサニタイズ手法を超えてSQLインジェクション攻撃を取得する方法はありますか?この手法を利用するユーザー入力のサンプルは非常に役立ちます。 更新: このコードに対してSQLインジェクション攻撃を効果的に開始する方法はまだわかりません。一部の人々は、バックスラッシュが1つの単一引用符をエスケープし、もう1つを残して文字列を終了し、残りの文字列がSQLコマンドの一部として実行されるようにすることを提案しました。 MySQLデータベースですが、SQL Server 2000では、単一引用符をエスケープする唯一の方法(私が見つけたもの)は、別の単一引用符を使用することです。バックスラッシュはそれをしません。 また、単一引用符のエスケープを停止する方法がない限り、ユーザー入力の残りの部分はすべて1つの連続した文字列と見なされるため、実行されません。 入力をサニタイズするより良い方法があることを理解していますが、上記で提供した方法が機能しない理由を学ぶことに本当に興味があります。このサニタイズ方法に対するSQLインジェクション攻撃を実装する特定の方法を誰かが知っている場合は、ぜひご覧ください。

6
悪意のあるコードを正規表現に入れる方法はありますか?
公開Webページに正規表現検索機能を追加したい。出力をHTMLエンコードする以外に、悪意のあるユーザー入力を防ぐために何かする必要がありますか? Googleの検索は、逆の問題を解決する人々-正規表現を使用して悪意のある入力を検出-には興味がありません。私のシナリオでは、ユーザー入力は正規表現です。 .NET(C#)のRegexライブラリを使用します。
138 regex  security 

14
モバイルアプリのOAuthシークレット
OAuthプロトコルを使用する場合は、委任先のサービスから取得した秘密の文字列が必要です。これをWebアプリで実行している場合、シークレットをデータベースまたはファイルシステムに格納できますが、モバイルアプリ(またはその点ではデスクトップアプリ)でシークレットを処理するための最良の方法は何ですか? 文字列をアプリに保存することは、誰かが簡単に見つけて悪用する可能性があるため、明らかに良いことではありません。 別のアプローチは、それをサーバーに保存し、アプリを実行するたびにフェッチし、電話に保存しないことです。アプリにURLを含める必要があるため、これはほぼ同じです。 私が思いつくことができる唯一の実行可能な解決策は、最初に通常どおりにアクセストークンを取得し(できればアプリ内のWebビューを使用して)、次にすべての通信をサーバー経由でルーティングすることです。これにより、要求データにシークレットが追加されて通信しますプロバイダーと。繰り返しになりますが、私はセキュリティの初心者なので、これについて知識のある人々の意見を本当に聞きたいです。ほとんどのアプリは、セキュリティを保証するためにこれらの長さにしようとしているようには見えません(たとえば、Facebook Connectは、アプリ内の文字列にシークレットを挿入すると想定しているようです)。 もう1つ、秘密が最初にアクセストークンを要求することに関係しているとは思わないので、それは私たち自身のサーバーを関与させることなく実行できます。私は正しいですか?

3
APIキーとシークレットキーはどのように機能しますか?APIと秘密鍵を別のアプリケーションに渡す必要がある場合、安全ですか?
私は、APIキーと秘密キーがどのように機能するかについて考え始めています。わずか2日前に、Amazon S3にサインアップし、S3Foxプラグインをインストールしました。アクセスキーとシークレットアクセスキーの両方を求められましたが、どちらにもアクセスするにはログインが必要です。 彼らが私の秘密鍵を求めているのなら、彼らはそれをどこかに正しく保管しているに違いないのではないかと思います。基本的に、クレジットカード番号やパスワードを尋ねて、自分のデータベースに保存するのと同じではありませんか。 秘密鍵とAPI鍵はどのように機能するはずですか?彼らはどのくらい秘密にする必要がありますか?秘密鍵を使用するこれらのアプリケーションは、何らかの方法でそれを格納していますか?

6
Symfony2で現在のユーザーを表すエンティティを取得するにはどうすればよいですか?
Symfonyのセキュリティ設定を使用しています。すべてが正常に動作しますが、1つの重要なことを行う方法がわかりません。 小枝で、私は現在のユーザーの情報に到達することができます: Welcome, {{ app.user.username }} または類似 コントローラでこれと同じ情報にアクセスするにはどうすればよいですか?具体的には、現在のユーザーエンティティを取得して、別のエンティティに関係的に格納できるようにします(1対1マッピング)。 私はそれがなることを本当に望んでいました $this->get('security.context')->getToken()->getUser() しかし、それはうまくいきません。それは私にタイプのクラスを与えます Symfony\Component\Security\Core\User\User そして私はタイプの1つが欲しい Acme\AuctionBundle\Entity\User これは私の実体です...

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