私は、クライアントが開発した外部システムへの雇用主のアプリケーションの1つへの統合を開発するように割り当てられました。セキュリティに関連する明らかな欠陥のある統合に関するクライアントの仕様。この欠陥により、権限のないユーザーがシステムにアクセスして、制限されたデータを表示することができます。
設計どおりに実装された場合の欠陥とその潜在的なセキュリティリスクを指摘し、欠陥のない代替案を提供しましたが、(要するに)クライアントから「指定された方法で行う」と伝えられています。
プログラマーには、既知のセキュリティリスクのあるコードを実装しないという倫理的責任がありますか?安全なアプリケーションを作成するためのソフトウェア開発者としての倫理的責任をクライアントの要件が上回っているのはどの時点ですか?
私はあなたが問題を指摘し、代替案を提案することによってあなたの役割を果たしたと思います。特定のレベルのリスクにさらすようなことをするように彼らが主張する場合は、関係するリスクを知っていることを明示的に要求したことを示す紙の証跡(およびそのバックアップ)があることを確認する必要があります。あなたが本当に懸念している場合、彼らが最初に、彼らが何に関連するリスクを認めているある種の法的文書/免責事項に署名した場合、彼らが望むことを喜んで行うと彼らに伝えることができますあなたはそうするように求めました(そしてもちろん、弁護士にそのような文書を起草してもらいます)。私は個人的に、このような状況でこのような文書の前例を知りませんが、あなたがこれを手伝ってくれる弁護士を見つけることができると確信しています。あなたの会社に法務部門がある場合、企業責任の可能性がある場合、彼らは彼らが関与するべきものかもしれません。そしてもちろん、それがこれほど深刻な場合は、上司とも話し合う必要があります。
単に作業を拒否しても問題ないのは、これがシステムのソフトウェアであり、心配している欠陥が原因でシステムが侵害され、結果的にシステムが侵害される可能性がある場合のみだと思います。生命/深刻な人身傷害の可能性が非常に高い、または何らかの壊滅的な財産の損失があった場合。