17

プロジェクトと法律をオープンソース化する以外に、会社/グループ外へのコードの漏洩を防ぐ、または少なくとも被害を最小限に抑える方法はありますか?

プログラマーは参照を必要とするため、(コードを電子メールで送信するのを防ぐために) インターネット アクセスをブロックすることはできません。また、周辺機器 (USB、Firewire など) をブロックすることもできません。

コードは、いくつかの独自のアルゴリズムと社内で開発された知識 (GUI の描画、データベースへの接続などの通常のルーチン コードとは対照的に) を持っている場合に最も重要ですが、一部のアプリケーション (会計ソフトウェアや CRM など) は複雑です。原則として開発は簡単ですが、ゼロから作成するには何年もかかるルーチン コードのコレクションです。これは、漏洩したコードが競合他社にとって役立つ場所です。

私が見る限り、漏洩の防止はほぼ完全に人間のプロセスに依存しています。どう思いますか?どのような注意と対策をとっていますか?また、以前にコード漏えいの影響を受けたことがありますか?

4

14 に答える 14

41

出てくるのを止めることはできません。解決策は 2 つあります。あなたを傷つけようとする人を止めることと、法的な予防策を講じることです。人々が嫌うのを止めるために、あなたは彼らを正しく扱います(スタックオーバーフローのために、それ以上言うことはおそらく話題から外れています)。

私は弁護士ではありませんが、自分自身を法的に保護するために、それを信じるなら、アイデアの特許を取得し、コードに著作権表示を入れ、プログラマーとの契約で知的財産権を慎重に指定するようにしてください。

しかし、結局のところ、答えは競合他社よりも速く実行されます。

于 2008-10-06T11:09:09.740 に答える
16

高度に機密性の高いものを扱っていて、電子メールや USB デバイスをブロックできないことを考えると、ソース コードが流出したとしても大きな被害はないと思います。問題は、コードがどのように機能するか、およびその周りの組織についての知識がなくても、コードまたはその一部に価値があるかどうかです。

一般に、「ソース」の価値は、一般に宣伝されているよりもはるかに小さく、基本的に、人や組織のないソースは、競合他社が占有するストレージに値しません.

また、最も可能性の高い攻撃ベクトルを見逃しており、何があっても止められない攻撃ベクトルでもあります。誰かがあなたがどのようにしてあなたの魔法を作ったのかを本当に知りたがっている場合、彼らはあなたの開発者を雇おうとします。彼らが彼らの頭蓋骨の中に情報を持っていることを止めることはできないので、たとえ彼らがすべての所有物や知識とドメインを提出したとしても専門知識は彼らとともに去ります。基本的には従業員の定着と信頼が唯一の方法です。ごめん。

于 2008-10-06T11:14:13.067 に答える
12

これが実際にどれだけ役立つかはわかりませんが、次のようになります。

  1. プログラマーを怒らせないでください。彼らが競合他社に情報源を提供したい位置に彼らを連れて行かないでください。ほとんどの場所は開発者を過小評価しています。あなたがどこにいるのか(SO)を考えると、そうなる可能性は低いと思います。月に一度ピザを手に入れるために戦わなければならなかった間、ゴルフのゲームのために営業担当者がお金を払って、会社によって支払われたのを見ることほど私には何も得られませんでした。

  2. 本当に、あなたの直接の競争相手が今日あなたのコードを手に入れたとしたら、それは何をしますか?あなたの製品や垂直市場は停滞していて、反応する前に新しい、より良いバージョンをリリースしないでしょうか?イノベーションの余地はありませんか?ほとんどの企業は、「独自のアルゴリズムと社内で開発した知識」を過大評価しています。確かに、それはいくつかの時間を短縮するかもしれませんが、それは問題の約10%にすぎません。

  3. 競合他社のすべての製品のすべてのソースを入手した場合、実際の使用量はどれくらいになりますか?私はそれがあなたを数ヶ月遅らせるだろうと思います。転送しません。戻る。

クリーンなシステムがあり、外部/内部の知識がほとんどない場合、自分の製品を構築可能な状態にするのにどのくらい時間がかかりますか?コードにドリルダウンして何が起こっているのかを調べるのにどれくらい時間がかかりますか?製品をより良く機能させる方法に時間とお金を費やすのではなく、何かを解決するためにどれだけの時間とお金を浪費しますか?

私は実際、競合他社の製品のすべてのソース(100万行以上のコード)を持っている立場にあります。私たちはそれで何もしませんでした-ちょっとしたことを除いて、それを削除しました、それは私が快適だった以上でした-しかし私たちは彼らがいた場所にたどり着くために何ヶ月もかみ砕いたと思いますそれから。

そこで、私たちはそれを削除し、それを入手したid10t(はい、他社からやってきた開発者/ PM)を平手打ちし、製品を非常に魅力的にする方法を考えました。はるかに良い時間の使い方。うまくいきました。同じ機能を同じ方法で再ハッシュするだけでなく、差別化要因がありました。

申し訳ありませんが、人々が物を出しているのを止めて、それでも実際に働くことができる方法はありません。あなたは彼らがそれをやりたがっているのを止めるか、彼らがそれを持っていることに価値がないようにそれを作ることができます。

私たちは、人々が私たちのコードを逆コンパイルすることも心配していました。MAPI / Exchangeと通信するC#、C ++、およびHTMLコードの500K以上の行の中で何が起こっているのかを理解するのに十分な問題があることに気付いたとき、私たちは心配をやめました。誰かがそれを逆コンパイルして解決できるなら、私たちは彼らを雇いたいです......

ところで、明確にするために、そして私が現在誰のために働いているかを考えると、これは私の現在の雇用主ではないことを指摘する必要があります。これはかなり前のことです。

于 2008-10-06T15:01:00.037 に答える
8

コード自体が漏れることはありません。それを取るには人が必要です。承認された開発者のみが接続できるように、トラフィック分析やリポジトリのロックダウンなど、使用できるセキュリティ対策がいくつかあることは明らかです。

しかし、一日の終わりまでに、あなたの最善の選択肢は、誰もあなたから盗もうとしないようにすることです. あなたのチームは幸せでなければならず、彼らはあなたのために働くことを誇りに思っていなければならず、彼らは会社とお互いに忠実でなければなりません. そのようなチームがあれば、部外者からコードを保護する必要があることを全員に説明するのは簡単なことです。専用のモグラを止めるのではなく、事故を防ぎます。

PSそして、はい、契約の適切な条項も同様に害を及ぼすことはありません。少なくとも、コードを外部に持ち出すことは道徳的に間違っていることを開発者が認識していることを確認します.

于 2008-10-06T11:15:11.897 に答える
6

以下のガイドラインに従えば、ソース コード リポジトリ全体の内容が stackoverflow 全体に投稿されても問題ありません。

http://geocities.com/mdetting/unmaintainable.html

ああ、ソースコードの一部へのアクセスをブロックしたり、送受信メールをスキャンしたりして、開発者を信頼していないことを示してください。職場でのちょっとした不信のような士気。

もう 1 つのクールな方法は、半分を「チーム a」と伝え、残りの半分を信頼できない「チーム b」と名付けることです。それを逆にして「チームb」のメンバーに同じことを言う。他のチームの「悪者」に注意を払い、不誠実な兆候があればあなたに報告するように彼らに勧めてください。いくつかの「紛争誘発剤」を振りかけます(たとえば、「ジョー」に「エドがあなたの後ろであなたについて何を言っているのか知っていますか?」)など。 -あなた]はあちこちで衝突します...

(ええと、いいえ、実際には上記のいずれもお勧めしません。冗談です。しかし、人々が上記のすべての戦術を使用しているのを見てきました。そして、うまくいきませんでした。)

于 2008-10-06T11:12:17.813 に答える
6

さて、ここで少し実用的な話をします。

  • 誰にでも親切で、彼らがあなたを傷つけないことを願ってもうまくいきません。

すべてのプログラマーは、会社に入社したその日から、永遠にそこにとどまることはないことを知っています。より良い機会を得るのに十分なほど学んだら、彼は変わるでしょう。

コードを書いたプログラマーは、他人に貸したときに書いたとしても、自分がそのコードの所有権を持っていると信じています。彼らの多くは、誰かを傷つけるつもりがなくても、通常はソースコードを手に入れようとします。

彼らが会社を辞め、ソース コードを持ち歩き、同僚との連絡が途絶えると、良心は落ち着き、休暇に行き、しばらくするとコードの断片がいたるところに現れ始めます。

それが私の会社に起こるのを目撃したので、私が知っていることです。

それで、人は何をしますか?

  • プログラマーがコピーをとらないことを具体的に述べた NDA に署名します。
  • 製品をプログラマー間で配布し、可能であればモジュールを個別にコーディングし、すべてのプログラマーがすべてのコードを取得するわけではないことを担当するチーフが統合します。
  • 終了時に、コーダーから、会社の IP を所有しておらず、違反の罰則を理解していることを書面で約束してもらいます。
  • 誰かがあなたの IP を侵害した場合は、その人を訴えてください! 例外なく。現在のチームの例として機能します。

私は極端に聞こえますか?

于 2009-01-06T16:45:22.267 に答える
2

Valve が HL-2 を開発していたときに、これが起こったことを覚えています。ここの興味深いリンク: http://www.shacknews.com/onearticle.x/28619

于 2008-10-06T11:49:36.710 に答える
1

私は、この種のことについて真の秘密主義の文化が存在する場所で働いたことがあります (歴史的に、会社が小規模だったとき、「顧客」が私たちの製品へのアクセスを乱用したことが何度かありました)。

トップの経営陣は非常に保護的でしたが、私は少し違った見方をしています。私たちのコードは、まったく無関係というわけではありませんが、ソフトウェア会社で期待されるほど重要ではないと思います。

私たちが成功している理由は次のとおりです。

1) コードは本質的に一連の問題に対する解決策です。私たちのコードを手に入れれば、それらの解決策を手に入れることができますが、私たちにはそれらの問題を解決した賢い人々がまだいます。彼らはそれらの問題をあなたよりもよく理解し、次の一連の問題をあなたよりもうまく解決することができます.

2) 彼らは問題 (および解決策) を本当に理解しているため、競合他社よりも迅速に物事を行うことができ、その結果、より安価 (またはより収益性) につながります。

3) また、これらの人々と社内の態度のおかげで、私たちはクライアントにうまく提供し、優れたサポートを提供してきました.

4) そのため、私たちは良い評判と参照可能な顧客を持っています.

少数の企業が、真に秘密にしておく価値のあるコード (独自のアルゴリズムなど) を持っていますが、私たちの大多数にとって、私たちの製品は賢い人なら簡単に複製できます。

私が言いたいのは、基本的なことを行うということです - 人々の契約に、彼らがそれを受け取ることができないこと、安全に保つことなどを書いてください - しかし、それに執着しないでください。あなたが非常に特定の市場にいるのでない限り、それがあなたのビジネスを本当に成功または失敗させるものである可能性は低い.

于 2010-03-23T11:15:15.573 に答える
1

回答のほとんどは、道徳的および倫理的価値に基づいています。Google や Facebook などは従業員の善意に頼っているだけなのだろうか。ちょっと待ってください、それは完全にユートピアです。ばかにならないでください。現実的であること。

はい、コードの漏洩を防ぐことは可能です:

仮想マシンをホストする仮想サーバーを使用すると、プログラマーは、リモート デスクトップ経由でこれらの仮想マシン (イントラネット) にローカルでのみアクセスできます。リポジトリはローカルで管理されます。リポジトリにアクセスするには秘密鍵が必要です。 仮想マシンからクライアントへのコピー/貼り付けは無効になっています。クライアントから仮想へのコピー/貼り付けのみが許可されます。

フェイスブックのような企業はそれを行っています。

コーディングを続ける唯一の方法は、実際のコードに写真を撮ることですが、これはまったく実用的ではなく、実行可能でもありません。監視カメラがいたるところにあるため、トイレに行って写真を撮る必要があります。

于 2014-12-06T23:28:19.943 に答える
0

以前の答えはすべて、信頼を築き、倫理的な人々を雇用することに集中しているようです。

別の可能性は、独自のドメイン固有言語とツールを作成することかもしれません。これにより、リークされたコードが使いにくくなります。それでも有用なアイデアを盗むことは可能かもしれませんが、ツールチェーン全体がリークされない限り、競合する製品を単純にコンパイルすることはできません。

于 2008-10-06T12:05:06.007 に答える
0

正直、ほぼ不可能です。Daily WTFに間もなく登場する企業が何をするかを提案したい場合:

  1. 「職場のコンピューター」をインターネットから切断します。参照用にインターネットにアクセスする必要があるため、全員に wbbook を購入してください。

  2. 開発者の USB スロットにエポキシを詰め込み、集中型サーバーからすべてをロード/アンロードするように要求します。これにより、コードのような構文について、サーバーを通過するすべてのデータがスキャンされます。

または、従業員を信頼して NDA に署名させることもできます...

于 2008-10-06T11:18:09.033 に答える
0

私は個人的に実際のケースでテストしたことはありませんが、コードの断片化を使用することをお勧めします:

基本的に、プロジェクトをいくつかのライブラリに分割し、それぞれのインターフェイスと単体テストを定義してから、SVN リポジトリを分離して、各グループが貴重なソース コードの限られた部分にアクセスできるようにします。

これは何があっても良い習慣であり、海外にアウトソーシングしている場合に役立ちます.

于 2008-10-06T11:20:52.087 に答える
0

最善のステップは、強い倫理的行動をとっている男性を追い返すことから始まります。すべての通信がスキャンされるように、その他のさまざまな手順を実行できます。電子メールと発信されるすべての情報がスキャンされる場所があります。デスクトップ/ラップトップにはハードディスクがないか、アクセスが制限されており、すべての作業はネットワーク フォルダー上で行われています。自宅で作業している場合でも、インターネットに接続する必要があります。オフライン作業が同期されます。USB とドライブが切断されています。

他のポリシーは、必要に応じてのみアクセスを提供することです。これらは速度を落とし、ある程度妨げますが、非常に強い決意を持っている人は、これを回避する方法を見つけるでしょう。もう 1 つの方法は、コードが非常に重要である場合、コピーライトのアイデアを合法的に保護することです。

于 2008-10-06T11:10:44.633 に答える
0

開発者を信頼してください。人は期待に応えたり、期待を裏切ったりする傾向があります。それらをよく扱い、忠誠心は双方向であることを忘れないでください. 結局のところ、サム ドライブを切り離すことができなければ、どれだけ信頼していなくても、コードの漏洩を止めることはできません。

そうは言っても、企業秘密の専門知識、おそらく知的財産法の他の部分の専門知識を持つ弁護士を見つけて、法的に物を保護する方法を尋ねてください. 競合他社があなたのものを手に入れた場合、競合他社がそれから利益を得ることは合法ではないことを確認する必要があります.

于 2009-01-06T16:44:52.033 に答える