web-dev-qa-db-ja.com

アプリケーションに自己破壊メソッドを含める必要がありますか?

私は最近、クライアントが請求書から救済されたという否定的な経験をしましたが、私の仲介者はすでに私たちのソフトウェアと設計をクライアントサーバーにアップロードしました。クライアントは既知の犯罪者であることが判明し、もちろん、サーバーのすべての可能なパスワードを変更しました。

ただし、CMSの管理パネルには引き続きアクセスできます。悲しいことに、私のソフトウェアは非常に安全であることがわかりました。SQLインジェクション、イメージのアップロードの偽装などを試みました。しかし、私は自分のソフトウェアをハッキングすることはできません。とにかく、私はこの人を訴える準備をしているので、問題..私は今考えているところですが、おそらくバックエンドの自己破壊メソッドがあるはずです。したがって、同様のケースが発生した場合、ソフトウェアをkillするオプションがあります。

私の考えは、コアファイルの一部の機能を非表示にすることです。 base64でエンコードするので、明確ではありません。だからこのようなもの:

eval(base64_decode('ZWNobyAnSGVsbG8Gd29ybGQhJzs=')); // echo 'Hello world!';

そして、基本的に小さなスクリプトを作成します。これは、ソフトウェアのすべてのファイルを取得し、それらを確実にchmodしてから削除します。
CMSの私の新しいバージョンはすべて、私が簡単に使用できるファイルマネージャーを備えていますハッキング。しかし、管理パネルへのアクセスが制限されている場合はどうでしょうか。

非常に明確にするため、これは、個人サーバーまたはクライアントサーバー(最後の部分は倫理的に問題がある)の開発段階のソフトウェアのみを対象としています。したがって、クライアントが私のソフトウェアを盗む必要がある場合。これは商用ソフトウェアには含まれません。
さらに明確にするために、私たちはそれらのまれなフリーランスの仕事について話している。契約作業はそのような方法を必要としないというのはかなり論理的だと思います。したがって、これらのjumprisk-clientsについては、開発モードでのみ、プロジェクトの準備ができているときは、明らかにこれは非常に非倫理的ですbackdoorあなたのソフトウェアの中に持っています。

  1. 倫理的にこれは良い考えですか? (覚えておいてください、プロジェクトが100%になり、すべてが支払われたら、明らかに削除します)
  2. クライアントに関する同様の問題のために、あなた自身のソフトウェアをhackする必要がありましたか?
  3. このアイデア、コード、メソッドについての推奨事項はありますか?
  4. 自己破壊スクリプトの考えられる欠点または影響は何ですか?

これに関する私の結論

少し悲しいですが、すべての回答は契約したケースを対象としたものでした。それは本当に私のせいでした。私の質問ではそれをもっと明確にしませんでした。ちょうど、契約によって保護されている場合、キルスイッチに意味がないことをかなりはっきりと考えました。
ただし、契約作業を行っている場合は、契約にこれを明記する必要があります。これにより、クライアントのサーバー内であっても合法になります。ただし、自分の個人用サーバー内にkill-switchを配置することは、実際にはビジネスではありません(これが私が本当に知りたかったことです)。

私はCMS用のkill-switchスクリプトを作成することにしました。主に、それは興味深い課題のようです。しかし、また、クライアントが友人の友人の友人である私の非契約作業にこれを使用できることを私はおそらくクライアントサーバーでこれを使用しませんが、クライアントまたは一部の場合には仲介者は私のサーバーにアクセスできます。そして、私のソフトウェアが盗まれたり、「知らないうちに移動されたり」した場合、私は支払いを受けず、ソフトウェアへのアクセスを切断します。

私はここで多くのトピックを読みましたが、警告を送信してからページを削除することをお勧めします。ええと、私が人を扱っているときのように、私はそれに問題を見つけました。誰がそれをどこか他の場所にコピーするだけかもしれません(おそらくそれをブランド変更して販売します)そしてそれが削除されたと私に伝えます。また、「サイトをオフにする」のではなく、削除します。ただし、クライアントサーバーにアクセスして削除することは依然として違法だと思います。または、少なくとも、FTPからではなくバックエンドからアクセスします。このため私は答えたすべての人に感謝します。

39

私は弁護士ではありません。クライアントを告訴する目的ですでに持っているようです。あなたが彼または彼女を保持している間、私はこれについて彼らの助言を得ることをお勧めします。

このサイトには、「キルスイッチ」や、開発者が補償を受けていないソフトウェアを無効にするその他の方法に関する質問がいくつかあります。契約にこの可能性を明記せずに、「ターンキー」ソフトウェア(開発してからクライアントに完全な権利を譲渡する場所)に組み込むだけでは、通常は悪い考えと見なされます。

まず、契約でソフトウェアの非支払いを無効にできること、または支払いが完全に受け取られるまでクライアントがソフトウェアに対する権利を持たないことを具体的に述べていない場合、「キルスイッチ」を反転させることはできません。契約に違反している。反対の言葉がない場合、「所持は法律の10分の1」なので、彼が所有権を与えられたらそれは彼のソフトウェアであり、それを破壊することは、もし彼がしなかった場合、彼のために建てた新しいオフィスビルをダイナミックにすることに似ています。払わないで。

2番目のポイントが続きます。クライアントに提供する契約には、次の効果に関する条項が含まれている必要があります"契約が満たされた場合の知的財産の譲渡"。つまり、使用するソフトウェアのコピーを彼に渡したとしても、彼があなたに全額を支払うまで、彼はそれを所有していません。これは、完全に支払いが受領されるまで、何らかの理由でソフトウェアのコピーを無効にする権利をあなたに与えます。なぜならそれはまだあなたのものであり、あなたは好きなようにできるからです。現在、彼は契約に違反していますが、違反していないため、弁護士が提示するのははるかに簡単であり、その間、クライアントは彼の不良品から何の利益も得られません。

建築請負業者との類似性は次のとおりです。建設中の建物が不法な立ち入りに対して保護されると、それは事実であり、請負業者は通常、作業が完了してサインオフされるまで、すべての鍵のすべてのコピーを施設に保管します。支払いは全額受け取りました。鍵が渡された後でも、支払いが失敗した場合は、不動産に先取特権を付け、極端な場合はそれを取り戻すことができます。ここでも同じことが言えます。ソフトウェアにアクセスするためのキーをクライアントに与えることはできますが、「マスター」キーを押したままにしておくと、全額が支払われるまでクライアントは管理アクセスを取得できません。もし彼が今すぐに入ることができてあなたにお金を払わないなら、あなたは単に「ロックを変更」して彼をソフトウェアから締め出すことができます。

しかし、あなたはクライアントにソフトウェアの「マスター」キーを与えました、そして彼は行ってすべてのロックを変更したので、あなたは入ることができません。それはそれが機能するはずの方法ではありません。あなたはまだ損害賠償を請求することができますが、その間に曲がったクライアントがソフトウェアを使用できるように、それを別の場所にコピーします(これは請負業者には起こり得ない大きなことです。彼が建物を取り戻す場合、彼はあなたを心配する必要はありません。ソフトウェアのすべてのコピーを回収したことを保証できないため、基本的に、唯一の救済策は、全額を支払うことです。彼がそれ以上のコピーがないことを保証できたとしても、あなたはおそらくあなたのソフトウェアを元に戻すことに満足することはないでしょう。それはおそらくあなたがただ向きを変えて誰かに売ることができないカスタムワークです。

ソフトウェアに対するあなたの権利に関係なく、彼のデータは彼のものであることを理解してください。触ることはできません。あなたが彼が作ったソフトウェアへの彼のアクセスを止めることができますが、あなたが彼のデータを破壊するなら、それは彼が払ったのではないあなたが彼が建てた建物を建て替えた後に彼の所有物を燃やすようなものです。あなたはそのデータに対していかなる権利も持っておらず、そのデータをそのままコンピューターに残しておくか、ソフトウェアなしでデータに妥当な方法でアクセスできない場合は、ソフトウェアとの絡みからデータを削除して、使用可能な形式(人間が消費できるデータベース、印刷物または電子コピーなど)の彼。

38
KeithS

概念的にはあなたは正しい。あなたの実行はすべて間違っています。

有効期限が切れるトライアルライセンスを提供する必要があります。全額を支払い次第、彼に最終的な「永久」ライセンスを与えます。すべて前払いで正直。

21
Morons

いいえ。クライアントが発見した場合、あなたはリンチされます。安全ではありません。誰か、いくつかの方法でそれをトリガーする方法を見つけた後、突然、すべてのクライアントに連絡して、それについて、そして緊急パッチを実行する必要がある理由を伝える必要があります。

あなたがそれをハックした場合、あなたはまた、刑事訴訟に身を投じることになります。まだサイトを所有している証拠があると思いますか?あなたがそれにアクセスする権利があること?彼のビジネスへのコストは「天文学的」である可能性があります

許容可能な代替案があります。サイトに透かしを入れると、すべてのページにメッセージが表示されます。支払い時に透かしを削除できます。

19
Ian

これは、あなたを刑務所に入れる可能性がある、驚くほど悪い考えのようです。

  1. それは非倫理的です。あなたのクライアントの悪い振る舞いはあなたが彼らのシステムをハッキングすることを正しくしません。
  2. 違法です。これは 以前に発生した であり、違反している当事者に悪い結果をもたらします。
  3. それは無意味です。トラブルに巻き込まれないこのバックドアをどうすればよいでしょうか?クライアントを脅迫し​​ますか?
  4. ばかげている。捕まることなくこれを行うことができたとしても、潜在的なリスクは考えられる利益をはるかに上回ります。
17
Ken Liu

プログラマーに依頼するのではなく、弁護士に依頼してください。少なくとも、あなたの質問が意図することをする権利があると言って、契約に条項を含めたいと思うでしょう。 (一部の契約の「取り返しのつかない危害」の条項では、裁判所がソフトウェアを整理する機会が得られるまで、裁判所にソフトウェアを直ちにシャットダウンするように命令することはできませんか?)裁判所命令は、コードボム(犯罪と見なされる可能性があり、裁判所があなたがソフトウェアを所有していないと判断した場合、それは財産の破壊である可能性があります。米国では、デジタルミレニアム法のデジタル暗号化セクションに違反する可能性があります。民事裁判所で損害賠償を勝ち取り、刑事裁判所でまだ有罪判決を受けていると想像してください)。

ルールはあなたやあなたのクライアントが住んでいる場所や運営している場所によって異なりますので、あなたは弁護士を求めていると思います。

12
psr

倫理的にこれは良い考えですか?

絶対違う。正直で正直なクライアントにとっては専門家ではないように見えるだけでなく、専門家全体にとっても有害だと感じています。ソフトウェアエンジニアには、最高品質のソフトウェアを提供するなど、クライアントや雇用者に対する責任があります。支払いや契約をめぐる論争がある場合は、適切なチャネルがあります。ソフトウェアの品質を下げることは適切な方法ではありません。

クライアントに関する同様の問題のために、あなた自身のソフトウェアをハックしなければならなかったことがありますか?

決して、契約やフリーランスの仕事をしたことがありませんが。私は常により大きな組織(場合によっては契約の下で働いていました)の従業員でした。私には、その考えは想像を絶するものです。システムのユーザーに対するソフトウェアの品質と倫理的責任を低下させるよりも、自分の名前が原因であり、ごく一部の顧客にだまされていることを誇りに思うソフトウェアを提供したいのです。

このアイデア、コード、メソッドについての推奨事項はありますか?

しないでください。

自己破壊スクリプトの考えられる欠点または影響は何ですか?

明らかな倫理的な問題に加えて、私は法的な問題について心配するでしょう。自分の作業を妨害することが合法かどうかはわかりません。たとえそうであったとしても、そのようなエクスプロイトを使用することは合法ではないかもしれません。

5
Thomas Owens

期限が切れたときにソフトウェアを無効にする、期間限定のライセンスでライセンスモジュールを実装するだけです。これはソフトウェア業界ではよく知られた慣行であり、後で制限を取り除くので、クライアントはそれに反対しないでください。

これは、機能を制限して製品のさまざまなバージョンを提供する場合にも便利です。

キルスイッチは、あまりにも多くのリスクがあり、それだけの価値はありません。

3
OliverS

秘密の自己破壊機能はhorrendousのアイデアです。はい、あなたは賢くなり、将来、それをひどいクライアントに固執する機会を持つかもしれませんが、その方法はその価値よりも厄介です。

  1. あなたはまだあなたがやった仕事の報酬を得られません。はい、他の人はあなたのコードを使用しません。しかし、あなたはまだ支払い不足に苦しむでしょう。一部の犯罪者は、一度リモートでサイトをダウンさせた人に料金を支払うことを決定すると思いますか?彼らは無料で自分のサイトを作るためにいくつかの新しいチャンプを見つけるでしょう。

  2. 自己破壊シーケンスを利用して、あなた自身の法的問題に責任を負わせます。管轄区域によっては、彼らのデータをハッキング/破壊していると簡単に見なすことができます(彼らが支払いをしようとしていて、なぜ彼らが以前に支払いをしなかったのかについて多くの明白な状況があったとき)。有罪判決を受けていない、または訴訟に成功していない場合でも、多額の訴訟費用がかかり、その価値よりはるかに多くの問題を抱えている可能性があります。

  3. 有料のクライアントが後でコードを閲覧した場合(または、マイナーなTweakを実行するためにコードを閲覧したばかりのCSの友人がいる場合)、奇妙なbase64部分を含む関数が表示され、これが何であるかのように実行され、誤ってWebアプリが削除された場合(そして、休暇中にそれを行うので、修正するのにしばらく時間がかかります)?または、あなたについて非公開であり、あなたの仕事に裏口を残していると述べて、あなたについてのたくさんのパブリックレビューを投稿しますか?もちろん、支払い後に完成品から削除してもかまいませんが、VCSを使用すると、古いソースを閲覧したり、支払い後にサーバーであなたを望まない可能性があります(これは厄介な会話になります。はい、もう一度アカウントが必要です。秘密の自己破壊バックドアは削除していません)。

  4. 犯罪者がデータをバックアップした場合はどうなりますか?秘密のバックドアを使用してWebサーバーを削除すると、彼ら(または友人)が問題のある機能のバックドア機能とそのバックをオンラインで見つけている間、サイトは1〜2日オフラインになります。

将来的には、簡単な契約に署名してもらい、段階的に支払いを行い、支払いが完了するまで、自分だけが制御する開発用サーバーとコンピューターからコードを離さないようにします。 (すべての作業が完了する前にライブである必要がある場合。ライブになるコードの割合に対しておおむね支払ったことを確認してください)。彼らがその作業を開発中であると見なしたい場合は、開発サーバーのファイアウォールを開くIPアドレスをいくつか提供してもらいます(そして、おそらくunpaid_work_in_development.example.com)。開発サーバーの稼働時間の保証はありません。必要以上のトラフィックが発生している場合(たとえば、多くのユーザーをサイトにリダイレクトしていることがわかった場合)、支払いが完了するまでファイアウォールを閉じます。ウェブサーバーにコンテンツを提供する必要がある場合は、コンテンツの提案をメールで送信するか、ファイルの小さなサブセット(Dropboxの外部のVCS制御下)への書き込み権限のみを持つDropbox共有フォルダーを作成します有意義に貢献できます(例:htmlテンプレート)。

2
dr jimbob

間違った質問をしました。作業して改善することは、ある種のリモートキルスイッチを追加することではありません(あなたがまたは他の誰かが使用できる脆弱性を追加する)のではなく、実際の問題を修正することです。支払いと配達の手配。あなたはより良いエスクローシステム(またはそのような概念が住んでいる場所と呼ばれるもの)が必要だったように思えます。

キルスイッチに時間を無駄にしないでください。ビジネスの取り引きで失敗した箇所を特定してください。

2
anon

なんらかのライセンスメカニズムを考案すると思います。これは、任意の数の商用または自家製のアイデアに基づいている可能性があり、ライセンスの有効期限が切れた後にソフトウェアが機能しなくなる可能性があります。システムがクライアントに受け入れられ、クライアントが支払った時点で、有効期限のないフルライセンスを提供できます。

このアプローチには、担当地域の弁護士の承認も必要ですが、ソフトウェアをリモートで無効にする必要がなく、事前にシステムの一部であることを規定できるという利点があります。しかし、あなたがそもそも支払いを拒否する人々と取引していることは私にとって非常に悲しいようです。

2
nick

これはDRMと呼ばれていませんか?支払いを受けて「爆弾」を取り除く限り、法的な問題はないと思います。お尻をカバーするパッチがすぐに利用できることを確認し、悪意がないことを示してください。

敵対的買収の際に発効する一部の会社の定款にある「毒薬」の条項を思い出します。

つまり、他のいくつかのポスターで表現されている考え方は、一部のプログラマーがいつも踏みとどまる理由を思い出させてくれます。より多くの人々がそのような爆弾をコードに入れると、プログラマーはより迅速に報酬を受け取るかもしれないと思います...これが標準であったとしても、まったく問題はないでしょう。人々は、他人のハードワークを盗むのが大好きです。限目。そして、もしアップルら。 DRMで自分のコンテンツを完全にDRMできるので、フリーランスのプログラマーもできると思います...

2
veryfoolish

実際には、クライアントは確実にログを確認し、killリクエストを見つけ、バックアップからコードを復元し、killスイッチを削除して再デプロイします。

0
jah