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

暗号化とITセキュリティに関する質問。これは、コンピュータ、ネットワーク、またはデータベースのセキュリティです。

5
PHPログインスクリプトで採用すべきベストプラクティスは何ですか?
クライアントのWebサイトをより安全にするために、ログインスクリプトを書き直したいと思っています。これに実装できるベストプラクティスを知りたい。パスワードで保護されたコントロールパネルは豊富にありますが、コードの記述、速度、セキュリティの点でベストプラクティスを暗示していると思われるものはほとんどありません。 PHPとMYSQLデータベースを使用します。 以前はmd5を使用していましたが、sha256またはsha512の方が(安全なハッシュとソルトと共に)優れていることがわかります。 一部のログインスクリプトは、セッション全体またはユーザーエージェント全体でIPアドレスを記録しますが、プロキシサーバーと互換性がないため、それを避けたいと思います。 また、PHP 5でセッションを使用する際のベストプラクティスにも少し遅れています(前回読んだのはPHP 4でした)。これに関するいくつかのベストプラクティスが役立ちます。 ありがとう。

5
データ入力検証-どこ?いくら?[閉まっている]
データ入力の検証は、常に私にとって非常に内部的な闘争でした。 レガシーアプリケーションリライトプロジェクトに実際のセキュリティフレームワークとコードを追加する寸前(これまでのところ、カードキャッスルに強力なレガシーセキュリティコードとデータ検証を保持している)、私はどのくらい検証すべきか、どこなど プロのJava開発者としての5年間で、データ入力の検証とセキュリティ対策のための個人ルールを作成し、改良しました。私は自分の方法を改善したいので、皆さんからいくつかのアイデアを聞きたいと思います。一般的なルールと手順は問題ありませんが、Java固有のものも同様です。 要約すると、これらは私のガイドライン(3層のWebアプリケーションスタイルで公開)であり、簡単な説明があります。 第1層のクライアント側(ブラウザ):最小限の検証、不変のルールのみ(必須の電子メールフィールド、1つのアイテムを選択する必要があるなど)。「6〜20文字」などの追加検証の使用頻度が少なくなります。これにより、変更のメンテナンス作業が増加します(ビジネスコードが安定したら追加できます)。 第1層サーバー側(Web通信処理、「コントローラー」):このルールはありませんが、ここではデータ操作とアセンブリ/解析エラーのみを処理する必要があると考えています(誕生日フィールドは有効な日付ではありません)。ここにさらに検証を追加すると、簡単に本当に退屈なプロセスになります。 第2層(ビジネス層):堅実な検証、それ以下。入力データ形式、範囲、値、メソッドをいつでも呼び出せない場合の内部状態チェック、ユーザーの役割/権限など。できるだけ少ないユーザー入力データを使用し、必要に応じてデータベースから再度取得します。取得したデータベースデータも入力と見なす場合、特定のデータが信頼できないか、DBで十分に破損していることがわかっている場合にのみ検証します。 第3層(データ層/ DAL / DAO):データにアクセスするのはビジネス層のみであるため、ここでは多くの検証が必要とは考えられません(「param1がtrueの場合、param2はnullであってはならない」などの場合に検証します)。ただし、「ここ」を意味する場合、「データベースにアクセスするコード」または「SQL実行メソッド」を意味することに注意してください。データベース自体はまったく逆です。 データベース(データモデル):適切なプライマリキー、外部キー、制約、データ型/長さ/サイズを使用して、DB上の不正なデータや破損データを可能な限り回避するために、十分に考慮し、強力かつ自己強化する必要があります/ precisionなど-独自のプライベートディスカッションがあるため、このトリガーは除外します。 初期のデータ検証は優れており、パフォーマンス面でも優れていることは知っていますが、繰り返しデータ検証を行うのは退屈なプロセスであり、データ検証自体は非常に面倒です。これが、非常に多くのコーダーがそれをスキップするか、途中でやる理由です。また、常に同期されていない場合、重複する検証はすべてバグの可能性があります。これらは、時間、帯域幅、CPU、ケースバイケースで処理される例外を犠牲にして、ほとんどの検証をビジネス層まで許可することを好む主な理由です。 それで、あなたはこれについてどう思いますか?反対意見ですか?他の手順はありますか?そのようなトピックへの参照?寄付はすべて有効です。 注:物事のJavaの方法を考えている場合、私たちのアプリはSpring MVCとMyBatisを使用したSpringベースです(パフォーマンスと不良データベースモデルはORMソリューションを除外します)。Spring SecurityをセキュリティプロバイダーとJSR 303(Hibernate Validator?)として追加する予定です。 ありがとう! 編集:第3層に関する追加の明確化。

5
システム上のすべての空きスペースを割り当てることにより、別のプログラムからメモリを読み取ることは可能ですか?
理論的には、システム上のすべての未使用メモリを割り当て、他のアプリケーションが不要になったメモリを解放するにつれてますます多くのメモリを要求し続けるプログラムをビルドすると、最近リリースされたメモリを別のアプリケーションから読み取ることができるでしょうか? ?または、これは何らかの形で最新のオペレーティングシステムによって保護されていますか? これには実用的なアプリケーションはありません。ただ興味があります。実生活で「利用可能なすべてのメモリ」を割り当てることには、いくつかの問題があることを理解しています。 編集:明確にするために、私は特に「解放された」メモリについて尋ねています。現在別のアプリケーションによって割り当てられているメモリにはアクセスしていません。

4
Web API認証テクニック
人々のGetリクエストにxml / jsonを提供するasp.net MVC Webサービスフレームワークがありますが、ユーザーを認証するための最良の方法(javascriptまたはOO言語でコーディングするユーザーにとって高速、簡単、簡単)を見つけるのに苦労しています。データが機密であるなどということではなく、ユーザーに登録してもらい、変更を通知して使用状況を追跡するための電子メールアドレスを用意するだけです。 以前の試みでは、URIにユーザー名があり、ユーザー名が存在することを確認し、使用に応じてdbテーブルをインクリメントするだけでした。これは非常に基本的なことでしたが、ユーザー名などとしてデモを使用している人がいることに気付くので、もう少し洗練させる必要があります。 利用可能な認証技術は何ですか?主要なプレーヤーは何を使用/しますか。
26 security  api  web  services  rest 

5
Webサーバーは同一生成元ポリシーをどのように実施しますか?
私はRESTful APIの開発により深く取り組み、これまでにいくつかの異なるフレームワークと連携してこれを実現してきました。もちろん、私は同じ起源のポリシーに遭遇しましたが、今では(Webブラウザーではなく)Webサーバーがどのようにそれを実施するのかと思っています。私が理解していることから、ブラウザの最後にいくつかの強制が行われているようです(たとえば、サーバーから受信したAccess-Control-Allow-Originヘッダーを尊重します)。しかし、サーバーはどうですか? たとえば、WebサーバーがAPIにアクセスするJavascript Webアプリをホストしており、そのサーバーでもホストされているとします。私は、サーバーが同一生成元ポリシーを適用すると想定しているため、そのサーバーでホストされているJavaScriptのみがAPIにアクセスできるようになります。これにより、他の誰かがそのAPIのjavascriptクライアントを記述して別のサイトでホストすることを防ぐことができますか?それでは、Webサーバーは、同じWebサーバーから発信されたjavascriptを実行していると主張しながら、APIエンドポイントにAJAXリクエストを行おうとする悪意のあるクライアントをどのように停止できますか?最も一般的なサーバー(Apache、nginx)は、この種の攻撃からどのように保護しますか?または、これについての私の理解は何とか外れていますか? または、クロスオリジンポリシーはクライアントエンドでのみ実施されますか?

11
雇用主から要求された場合、安全でないコードを書くことを受け入れるべきですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 雇用主は、パスワードをデータベースにクリアテキストで保存する機能を実装するように要求しました(または、バイナリに保存されたあいまいな暗号化/復号化機能を使用します。これは少し優れていますが、安全ではありません)。 お客様がセキュリティ機能を使用する際のセキュリティの影響を認識していれば、そのような機能を実装しても構わないと答えました。 同僚とこの問題について議論するとき、誰かが私に、ソフトウェアエンジニアとして、私たちが製品に導入するセキュリティ問題に個人的に責任がある(法律上の意味で)と私に言いました。契約を調べましたが、同様のケースに関連するものは見つかりませんでした。 法的な観点から、そのような機能の実装を拒否すべきですか?顧客がこの機能による損害を経験した場合、たとえ彼が同様にセキュリティ上の懸念を知っていたとしても、私の雇用主は私を裁判に連れて行くことができるのは本当ですか? 編集:私はこの質問は弁護士からしか確実に答えられないと理解しています。ライセンスに関する質問についても同じことが言えます。ここでの人々は、時には弁護士に相談した後、別の司法管轄区で適用される保証なしに、理解と経験を与えます。ただし、ここではライセンスがトピックとして明示的に受け入れられています。ここではどのような質問をすることができますか?を参照してください。。他のプログラマーも同じ問題を抱えている可能性があり、他のプログラマーは以前にこの状況に直面したことがあり、そのために弁護士に相談した可能性があると思います。
24 security  legal 

5
安全なパスワード履歴を実装する方法
セキュリティ上の理由から、パスワードはプレーンテキストで保存しないでください。ハッシュを保存する必要があります。また、レインボーテーブル攻撃を防ぐために、ハッシュを慎重に生成する必要があります。 ただし、通常、最後のn個のパスワードを保存し、最小限の複雑さと異なるパスワード間の最小限の変更を強制する必要があります(ユーザーがPassword_1、Password_2、...、Password_ nのようなシーケンスを使用できないようにします)。これはプレーンテキストパスワードでは簡単ですが、ハッシュのみを保存することでどのようにできますか? つまり、安全なパスワード履歴メカニズムをどのように実装できるのでしょうか?

7
公開用のデータベースIDを不明瞭化/難読化することは、本当に「ベストプラクティス」ですか?
私は人々がインターネット上であちこちで講義するのを聞いたことがあります。それはウェブアプリケーションで人前向きのデータベースIDを隠すのがベストプラクティスだということです。私はそれらが主にフォームとURLで意味すると思いますが、私は主題について一口以上を読んだことがありません。 編集:もちろん、今私はこれを尋ねたので、私は主題に関するいくつかのリソースを見つけます: /programming/2374538/obscuring-database-ids /programming/1895685/should-i-obscure-primary-key-values http://joshua.schachter.org/2007/01/autoincrement.html これらのリンクは私の好奇心の一部を満たしましたが、SOの投稿には多くの票がなく、必ずしもこのコンテキストのトピックに集中しているわけではないので、何をすべきかわかりません。リンクは偽です。残りの投稿はそのままにしておきます。 あいまいさとセキュリティの違い、およびこの2つがどのように連携するかを理解していますが、なぜこれが必要なのか想像できません。 これには真実がありますか、それは単なる妄想ですか、それとも完全に偽物ですか? 私はそれを行う方法を考えることができますが、もちろん、それはアプリケーションコードに多くの複雑さを追加します。これはどのような状況で役立ちますか?これが人々が頻繁に行うことである場合、通常はどのように展開されますか?識別子をハッシュしますか?他に何か?余分なセキュリティを確保するための多くの作業のようです。私は本当の解決策を探しているのではなく、人々が現実の世界でこれをどうやって/なぜ行うのかを知りたいだけです。 これは本当に「ベストプラクティス」と見なされますか、それとも単に価値の低い微最適化のみですか? 注:少数の人々は間違った考えを持っているかもしれないと思います:推測が困難なIDが唯一のセキュリティメカニズムであることを示唆していません。明らかに通常のアクセスチェックがあるでしょう。それらが適切に配置されており、レコードのIDまたはハッシュされたIDを知るだけでは、アクセスを許可するには不十分であると仮定しましょう。

11
ライバル会社によって盗まれたソースコード
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 私が働いていたいくつかの企業では、マネージャーはITセキュリティコンサルタントにかなりのお金を費やしてきました。主に彼らが恐れているので、私たちはライバル会社によってソースコードを盗まれるつもりです。ただし、プログラマーとしては、ライバル企業が実際のソースコードが有用であることに気付くのはささいな懸念だと思います。結局のところ、アプリケーションにアクセスするだけで十分であり、法律に違反することなく実行できます。私の意見では、ビジネスマンが扱うデータはソースコードよりもはるかに有用だと思います。 私の質問は ソースコードが盗まれ、ライバル企業がそれを広範囲に使用した既知の例はありますか? いくつかのゲームエンジン(正確に覚えていれば、地震1と半減期2)のソースコードが盗まれていることは知っていますが、ビジネスを本当に損なうことはありません。 (この質問は、stackexchangeの他のフォーラムにより適しているかもしれません)
23 security 

19
開発のための海賊版/クラッキングソフトウェアの使用[終了]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 免責事項:私は、海賊版ソフトウェアの使用を決して容認しません。 開発目的での海賊版ソフトウェアの使用を目撃したことはありますか?会社がソフトウェアを購入するのに十分なお金を持っていなかったのに、無料の代替手段がなかったのかもしれません。購入する前に何か試してみたいと思った会社で、その製品の試用ライセンスがなかったかもしれません。どんな状況でも、海賊版/クラッキングされたソフトウェアの使用が認められている会社で働いたことはありますか?これを行うと、結果がありましたか?
22 security  ethics 

1
パブリックリポジトリのセキュリティの脆弱性に対処するPRを処理するためのベストプラクティスは何ですか?
パブリックリポジトリを備えたオープンソースプロジェクトは、安全に報告されているがまだ公開されていないセキュリティ脆弱性に対処するプルリクエスト(PR)を最適に処理する必要がありますか? 私は数百人の貢献者によるオープンソースプロジェクトに関与しています。定期的に予定されている月次リリースの一環として、セキュリティ通知と脆弱性を年に数回公開しています。パッチを適用したバージョンを公開するまで、脆弱性に関する情報は公開しません。プロジェクト管理システム(JIRA)でセキュリティの問題を安全に管理できます。しかし、セキュリティの脆弱性がGitHubに提出されるときに修正するPRを隠すための良いプロセスがありません。私たちは、人々がリリースされる前にこれらの修正を見つけて、ゼロデイエクスプロイトを作成できることを心配しています。 メインリポジトリをフォークするプライベートリポジトリの使用を検討しましたが、現在のレビューとQAワークフローの多くはPRで行われます。ワークフローをセキュリティチームのみのプライベートリポジトリに移動した場合、修正が公開されている場合、tarballを生成してsourceforgeで公開するのにかかる時間までウィンドウが短くなり、大幅に改善されます。また、PRを公開ベータ版にマージすることを避ける必要があるかもしれません。 その方向に進む前に、オープンリポジトリを使用したオープンソースプロジェクトでリリース前のセキュリティバグ修正パッチを処理するためのベストプラクティスを教えてください。GitHubとは異なるプラットフォームを使用することで問題に対処できる場合は、GitLabへの移行を評価していることに言及する必要があります。

4
パラメータ化されていないクエリにエラーを返させないのはなぜですか?
SQLインジェクションは非常に深刻なセキュリティの問題です。その大部分は間違いを犯しやすいためです。ユーザー入力を組み込んだクエリを作成するための明確で直感的な方法では脆弱性が残り、それを緩和する正しい方法ではパラメーター化について知る必要があります最初にクエリとSQLインジェクション。 これを修正する明白な方法は、明白な(しかし間違った)オプションをシャットダウンすることだと思われます:パラメータの代わりにハードコードされた値をWHERE句で使用する受信したクエリが素敵で説明的なものを返すようにデータベースエンジンを修正します代わりにパラメータを使用するよう指示するエラーメッセージ。これには、管理ツールからのアドホッククエリなどを簡単に実行できるように、オプトアウトオプションが必要になることは明らかですが、デフォルトで有効にする必要があります。 これを行うと、SQLインジェクションがほぼ一晩中停止しますが、私が知る限り、実際にこれを行うRDBMSはありません。そうでない理由はありますか?
22 security  sql  rdbms 

5
秘密鍵を保存する場所は?
ソフトウェアの一部を暗号化するとします。たとえば、データベースなどの資格情報。これらの値をどこかに保存する必要がありますが、クリアテキストで保存すると、攻撃者が簡単に不正アクセスを取得できます。 ただし、クリアテキストを暗号化する場合、キーはどこに保存しますか?難読化のレベルに関係なく、ソフトウェアがアクセスできるものはすべて、意欲的な攻撃者はアクセスできます。 キーがファイルシステムのセキュリティモデルによって保護されているとします。しかし、(悪意のある)スーパーユーザー、またはそのような忠実度を提供しないプラットフォームはどうでしょうか? または、キーはソフトウェアバイナリにハードコードされていますが、常にデコンパイルできます。オープンソースソフトウェアや解釈されたコードについてはどうでしょうか。 キーが生成される場合、そのようなアルゴリズムは決定的(おそらく)である必要があり、同じ問題がシードに適用されます。 等 暗号化は、チェーン内の最も弱いリンクと同じくらい強力であり、これはかなり緩いもののようです!それが仕事にふさわしいツールだと思い込んで(ユーモア)、そのような情報を堅牢に保護するにはどうすればよいでしょうか? ジョブに適したツールについて:おそらく、たとえば-サービスアクセス(DB、認証サーバーなど)の場合、サービスアカウントを使用してこの層でのアクセスを制限します。監査などのように、クリアテキストで資格情報を持っていることはそれほど心配ではありません。 しかし、私にはそれでも不十分だと思われます。だれもいるべきではないところをぶらぶらしたくないのです!

4
米国からの輸出制限に関するプログラマーの懸念
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 暗号化ソフトウェアに関する米国の輸出規制を満たさなければならないソフトウェアを設計および公開するとき、どの側面を考慮する必要がありますか? ウィキペディアでは、暗号化ソフトウェアに割り当てることができるさまざまなカテゴリがあると述べています。また、輸出先(中国、ロシアなど)も大きな役割を果たしています。しかし、私はこれらの制限と私の仕事への影響を本当に理解していませんでした。 誰も私にそれを説明できますか? アプリケーションを公開しようとすると(たとえば、AppleのApp StoreやAndroidのマーケットで)、アプリケーションが米国の輸出規制を満たしていることを確認する必要があるからです。また、パスワードなどの安全な情報ストレージを提供する多くのアプリケーションがあります。 彼ら全員が政府に通知し、レビューを求めましたか?もちろん、彼らがそうしたかどうかはわかりません。しかし、彼らはこれを行う必要がありますか?

4
PHPのrand()の出力を予測する
PHPのrand()の出力はそのPRNGとして予測可能であることを多くのソースで読みましたが、それを事実として受け入れているのは、多くの場所で見たからです。 概念実証に興味があります:rand()の出力をどのように予測しますか?この記事を読んで、乱数はポインター(シード)から始まるリストから返される数値であることを理解していますが、これがどのように予測できるか想像できません。 誰かが数千の推測内で与えられた瞬間にrand()を介してどのようなランダムな#が生成されたかを合理的に把握できますか?それとも10,000個の推測?どうやって? これは、rand()を使用してパスワードを失ったユーザーのトークンを生成するauthライブラリを見て、これが潜在的なセキュリティホールであると想定したためです。それ以来、このメソッドをopenssl_random_pseudo_bytes()、元のハッシュされたパスワードとマイクロタイムの混合物をハッシュする方法に置き換えました。これを行った後、外を見ていると、トークンがrand()のmd5であることを知っていてもトークンを推測する方法がわからないことに気付きました。
21 security  random 

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