コーディング時にセキュリティについて積極的に考えていますか?


9

コーディングの際、コードが本来意図されていない方法で悪用され、保護された情報にアクセスしたり、コマンドを実行したり、ユーザーにしたくない何かを積極的に考えたりしませんか?


何をコーディングするのですか?私はさまざまなことをします。
David Thornley

9
はい、しばしば。通常、「くそったれ、私には時間がありません。誰も見つけられないことを願っています」に似たフレーズです。
liori

回答:


10

やや。免責事項:私はセキュリティ担当者です;)

だから私が働く方法は、どのような種類の攻撃者がどのような種類の攻撃を行う可能性が高いかを表す脅威モデルを持っているということです。これは、セキュリティ要件を解決するのに役立ちます。実際にコーディングしているときは、カーソル変数が常に境界内にあるように注意し、汚染された入力を無害化し、エラー条件を処理するなど、通常の「安全なコーディング」を行います。次に、脅威モデルに戻り、攻撃者の標的になる可能性が最も高いモジュールを確認します。それらはいくつかの追加のレビューを取得します。


4

SQLパラメータの使用など、業界標準の方法を使用しています。.NET Frameworkのような「安全な」プラットフォームを使用し、ASP.NET MVCの偽造防止トークンなどのセキュリティ機能を利用しています。私は独自の暗号化アルゴリズムを記述していませんが、それらの暗号化がセキュリティ上の利点の方法で提供するもの、およびそれらを使用してそれらのセキュリティ上の利点を取得する必要がある場合について理解しています。

要するに、私はベストプラクティスを使用していますが、独自のセキュリティツールを開発していません。私はその点ではセキュリティの専門家ではありません。私はおそらくこれらの問題についてすでに深く考えており、リスクと利点を明確に理解している他のセキュリティ専門家に依存しています。

セキュリティへの私の基本的なアプローチは、単にセキュリティツールを使用することを超えて、私が期待しているものを除いて、システムへのすべての可能な入力を排除することです。社会保障番号フィールドがある場合、実際に表示されるのは、特定のパターンの数字とダッシュだけです。

クライアントとサーバーの両方でユーザー入力を検証します。


組み込みのセキュリティ機能を使用することに同意しますが、それらを使用するのがいつどのように適切であるかを考える必要があります。私はあなたの製品のセキュリティについて考えるために他人に頼ることを心配していると言わざるを得ません。彼らはそれをしていません。
Michael Shaw、

@Ptolemy:SQLステートメントをパラメーター化するのが適切でないときは?偽造防止トークンを使用すること適切でないのはいつですか?データが機密情報である場合、暗号化の使用が適切でないのはいつですか?
Robert Harvey

暗号化について少し考えてみましょう。最初の質問ですが、どの暗号化を使用していますか?不十分な暗号化を使用すると、誤った安心感が与えられます。ある時点で、データを復号化する必要があります。どの時点でこれを行いますか?コードの複雑さと比較した場合のリスクは何ですか?暗号化は実際にどのような保護を提供しますか?DLLバイトコードは暗号化されていますか、それとも暗号化キーをDLLから読み取ることができますか?そのため、ほとんどまたはまったく理解せずに機能を使用するだけでは危険です。
Michael Shaw、

@Ptolemy:それがセキュリティについて考えることの意味するところなら、私は同意します。これらのツールを適切に使用するには、これらのことを実際に知っている必要があります。
Robert Harvey

3

もちろんです。

セキュリティがすべてです。そして、数値計算ソフトウェアでは、それは2度行われます。
つい先日、ユーザーが私の古いプログラムの1つでバグを見つけて悪用することができました。損傷は修復不可能でした。下記参照:

代替テキスト

以前は丸かったです。


7
これにはさらに説明が必要です:)
Toby Allen


2

いいえ、私はセキュリティが関係している問題領域(大規模データ視覚化ソフトウェア)で働いていません。私コードにたくさんのアサーション(インデックスチェック、整合性チェックなど)を持ってます。これは、セキュリティ上の懸念のためではなく、間違ったコードが早期にクラッシュして目に見える形でクラッシュするのが好きだからです。


1

もちろんです。インジェクションの脆弱性、およびビジネスロジックがデスクトップ環境とWeb環境でどのように機能するか、および両方のタイプの環境でセキュリティがどのように実装されるかについて考えます。


1

私はセキュリティの専門家ではありませんが、Webアプリケーションをコーディングするときは常に、ユーザー入力にあらゆる種類の奇妙さが含まれている可能性があり、常に完全にエスケープする必要があると思います。また、Ajaxをサーバーにコールバックして、ユーザーがログインしていること(ユーザーが特定のイベントに必要な場合)、およびユーザーが実行しようとしていることをすべて実行する権限があることを確認します。

コードベースには、入力用の一連のフィルターがあります。PHP $_GET$_POST配列を直接チェックすることはありません。代わりに、私は機能を介してそれらを照会するRequest::get('parameter', 'filter')ようなフィルタを使用してinttext、およびいくつかの他。(Request::post()もちろん、POST入力の場合)。


1

はい。私がマルチプレイヤーゲームに取り組んだとき、全員が悪用や不正行為の方法に執着していました。不正行為はゲームを完全に破壊する可能性があります。ゲーム内アイテムの販売に関連するビジネスモデルは言うまでもありません。したがって、セキュリティ上の懸念と改ざん防止対策は非常に重要な議題でした。とても気に入りました。私は以前に他のプロジェクトに取り組んできましたが、コードが安全であることを保証するためだけに、コードに長く取り組むことについて罪悪感を感じる必要がありました。


0

はい。セキュリティは重要であり、後付けではありません。事実の後にセキュリティを追加することは、最初にそれをアプリケーションに設計するよりも一般に困難です。後で追加する場合、おそらくいくつかのことを見落とすでしょう(またはまったく追加しないだけです)。


0

セキュリティの一般的な原則(整合性、認証、権限)を理解し、人々が何千年もの間これらのセキュリティの柱をどのように覆してきたかについて数冊の本を読んでください。

次に、設計およびテスト戦略に関するいくつかの優れた本を読み、アーキテクチャにテスト容易性を設計する方法を学びます。

さて、私がセキュリティについて考えるときがやってきました。データソースを検証する方法を考えていますが、データが改ざんされているかどうか、データソースが誰であるか、それがどれほど確実かどうかは重要ですか?どのように変更されたのでしょうか...

これは設計に影響します。構成ファイルにはキーセクションが暗号化されている場合や、特定のフィールドがクリアテキストで関連付けられた署名フィールドを持つ場合があります。あなたはそこでより高いレベルの敵意を期待するべきであるので、物事はインターネットに面したサービスでより複雑になります。

次にテストでは、これらすべてをどのようにテストしますか。最大データエントリは何ですか?ソフトウェアをこれらの制限を超えてプッシュするとどうなりますか?どのように処理しますか?それは何を信頼していますか?どのようにしてその信頼を偽造できますか?


0

はい。

私は過去に十分なハッカーに対処したことがあります。彼らは常に大きなサイトを危険にさらそうとしていることを知っていて、小さなサイトでさえ安全ではないほど十分なボットがそこにあります。

私はいつもハッカーのよう考えて、毎日当たり前のシステムがどのようにゲームされているのかについてのカジュアルなコメントで同僚を時々心配するところまで、私はいつも考えています。


0

これは、アプリケーションなどに応じて、開発者がプロ​​セスに根本から多かれ少なかれ組み込むものでなければなりません。残念ながら、開発者はセキュリティを引用する傾向がないため、バイヤーはそれを考える傾向がありません(私は知っています、これは少しキャッチ22です。買い手が最も安い見積もりを求めている場合、セキュリティが含まれていない可能性があるためです)

開発者として、この分野に熟練していれば、確実に有利になります。私は特に銀行と金融サービスについて考えていますが、他の業界にも適用できます。現在、彼らは70〜10万人の予算で、新卒者がプロセス、セキュリティ、およびその組織のその他の詳細について習熟するためのトレーニングを行っています。それらの30kを保存できる場合、それは良いCVプラスです!

英国では、Information of Information Security Professionals、およびスコットランドでは、Center of Excellence in Security and Cyber​​crimeが大学と緊密に連携して、コース資料のレビュー、貧弱なコーディングの現実世界への影響、および夏の配置の促進に関するゲストレクチャー(例:法執行機関の不正部門に配置されたソフトウェア開発者。)多くのお金を節約できる可能性があるため、ほとんどの支援組織はこれを無料で行っています。

(免責事項-私はさまざまなグローバル組織のセキュリティ担当者でした)

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