如果我的雇主要求我写不安全的代码,我应该接受吗?[关闭]


24

我的雇主要求我实现一项功能,该功能要求将密码以明文形式存储在数据库中(或使用存储在二进制文件中的晦涩的加密/解密功能,这会更好,但也不安全)。

我回答说,我愿意实施这样的功能,前提是客户在使用该功能时已意识到其安全隐患。

在与同事讨论此问题时,有人告诉我,作为软件工程师,我们对产品中引入的安全问题负有法律责任(从法律角度而言)。我查看了我的合同,但没有发现与类似案件有关的任何内容。

从法律的角度来看,我应该拒绝实施这种功能吗?如果客户由于此功能而遭受损害,即使他也意识到安全问题,我的雇主是否可以将我告上法庭?


编辑:我知道这个问题只能由律师可靠地回答。许可问题也是如此:这里的人们有时会在咨询律师后给出他们的理解和经验,但不能保证它也适用于其他司法管辖区。但是,此处明确同意许可为主题,请参阅我在这里可以问什么样的问题?。我相信其他程序员可能也会遇到同样的问题,而其他程序员以前可能也遇到过这种情况,因此可能已经咨询了律师。


2
您应该联系律师-这不是获得答案的正确位置。
Oded

11
IANAL,但雇主似乎不太可能成功地起诉雇员,以完全按照他们的指示去做。

3
@Oded:客户可以起诉公司,是的,公司可能仍然不公平地责怪并解雇雇员(在“随意”的管辖范围内),但是我从未听说过客户能够起诉个别程序员。该公司是其进入销售,而不是员工的合同的法律实体,所以它是该公司负责在产品质量上的问题。

8
除了以纯文本格式存储密码外,还有什么能降低客户对您的解决方案的信心?荒唐 如果您的老板要问您自己挖坟墓,那就去做,但要确保您以电子邮件的形式收到,告知您您的分歧并警告他潜在的后果,并命令他去做。无论如何都要做。始终保持与您的通信。
maple_shaft

3
我投票结束这个题为离题,因为一个法律问题只能由律师适当回答。

Answers:


11

您的同事被误导了,特别是因为您在合同中找不到任何有关安全责任的信息。即使这样做,您也从管理层那里得到了矛盾的命令。

我认为,只有在故意损坏产品,制造自己的定时炸弹,复活节彩蛋等情况下,您才可以接受可能的诉讼。

在大多数情况下,公司拥有软件,因此他们可以享受利润,但是这也意味着他们也要承担风险,而不是个人开发者。

就个人而言,我将确保管理层知道此安全功能的问题,以便事先对其进行记录,然后继续进行我的工作。

话虽如此,请咨询律师yada-yada-yada。


34

无论发生什么情况:切勿在没有电子邮件或其他证据清楚地表明您刚刚遵守雇主指示的情况下编写此类代码。


6
并将其打印/发送到外部帐户。
Bill Leeper

7
被称为CYA(覆盖您的A ..)。我曾经通过电子邮件将反对性说明的副本通过电子邮件发送到我的个人电子邮件帐户,然后将其发送给公司法律部门(我们有道德团队,所以这是保密的)。这取决于您准备吸收多少热量以及需要多少“保护”。其他值得考虑的因素包括市场营销,董事会(最终负责任),所有者/股东。问“谁最放松”?这会限制职业发展,因为您要么浪费了很多重要人物的时间,要么使您的老板看起来很糟糕。
mattnz

+1-遮住背部。将您的反对意见和理由记录在案,以证明您认为这不好的原因。记录您的经理的回应。打印出来并仔细归档,以防热量传给您。
Qwerky 2011年

CYA,但不要对此表现出消极的积极性。确保您对反对意见表示反对,并也保存该电子邮件。
Doug T.

简单明了-我喜欢这个答案。这肯定会在法律上有助于承担责任,但是,您仍然必须自己做出道德决定。
stringo0 2011年

6

从法律角度来看,请咨询律师。我不是一个人,我们也不知道您所居住的管辖权或法律可能有助于解释某些事情。但是无论如何请咨询律师,您是否会相信一个互联网问答网站,了解您的个人,专业和财务前景。

一般的业务建议是确保您以书面形式保留您的保留意见,并且鉴于书面上的安全隐患,请确保雇主的直接命令可以继续。如果情况确实向南并击中风扇,您将不得不依靠它。

解决此问题的另一种方法是更深入地了解需求-您已共享计划,而不是要解决的问题。剥皮猫或处理密码查找要求有多种方法。


3

我不用担心-这并不意味着您恶意决定自己放入不安全的功能并在以后加以利用,或者只是因为您的疏忽而将其放入。公司想要这样做,有人决定在开发时间和用户期望之间进行折衷(通常),因此您应该继续进行下去。如果您真的担心任何卷土重来,请给您的老板发送电子邮件并保留回复。完成此操作后,作为一名员工,您将获得覆盖。

有时,这是可以接受的原因-例如,我知道一些存储纯文本密码的非常关键任务的解决方案,但是系统的其余部分受到保护,因此这不会成为问题。例如,该系统在单独的网络上。如果您不了解故事的其余部分(在大多数公司中很常见),那么您可以合理地期望有人考虑了这一点。同样,如果您收到老板发来的电子邮件,则可以期望他知道他在做什么。

顺便说一句...这是我(作为消费者)可能使用的产品吗?如果是的话..那是什么,我可以避免吗?:)


1

我们是否意识到开发人员添加了许多错误,这些错误确实在实时操作过程中损害了客户的利益。我们认为它们不是故意的,但这仍然是我们的一些具体工作的结果,但仍未达到预期目标。因此,您所做的示例并非孤立的情况,开发人员的决策(或更高决策)的确会影响客户。

这是我的建议:

  1. 首先,无论如何-是将软件交付给另一家公司的公司。没有给个人直接功劳(超出团队的掌声和薪水最多)和工作所有权。因此,尽管这对我们交付来说不是一件好事,但只要您不是您的决定,您就不是这里的罪犯

  2. 作为专业的程序员,您需要明确指出代码的局限性以及在如何维护所涉及的README文件或文档中涉及的危险。如果有需求文件-建议的测试报告等应明确提及限制。

  3. 为了让真正的决策者负责任,我会要求上级在任何此类文件的电子邮件中确认他们的想法。

  4. 正确权衡风险。我的数据卡软件确实将密码存储在计划文本中,但这并不重要。但是,如果我要存储银行密码或访问数据库或服务器,则不能接受。因此,根据实际风险,您必须将问题尽可能升级为更高级别。


1

除非您以故意破坏性的方式执行工作,否则执行要求您完成的任务在法律上没有什么不利方面。您将拥有一份表明您的责任的雇佣合同,可以就技术性咨询律师。如果您确实感到暴露,请获得有关纯文本密码的设计决定的书面批准。

在确定该功能已在最终版本中发布之前,我不会透露它是哪个软件。我仍然希望我们设法以我认为可以接受的方式通知客户。

更令人担忧的是您对“通知客户”的报价。如果您损害了公司的声誉,声誉等(合同中有关于该条款的条款),则您的公司可能会起诉您-当需要参考或其他工作时,举报人的辩护可能对您没有帮助。

如果您对安全漏洞的影响不满意,请重新整理简历,继续前进,但是如果不是您的决定,也不是您的公司,那么我将不明白为什么(法律上)将这归咎于您。


1
感谢您的回答。我在评论中表达不好。我对这个特定的决定不会感到满意,但这并不会令我对公司或任何人感到生气。在问答网站上公开发布绝对是一个坏主意。这将是负面的广告,几乎没有机会对任何人有所帮助。
Antoine

最好有这样一个论坛供您发泄-希望一切顺利。
amelvin

1

您的公司雇用您时,应该已经购买了一份专业赔偿保险。如果软件出现任何问题,软件滥用或软件中发现的缺陷(例如未加密的密码),这应该为所有员工提供充分的法律保护。

作为雇员,您应该按照他们的要求去做,而他们应该按照客户的要求去做,只要双方都没有违反法律,就没有问题,但是如果您按照公司的要求去做,那么就可以了。被发现不是客户想要/需要的东西,那在他们之间,并且专业赔偿保险应为您承担任何个人责任/责任。

IANAL,但除了与您自己的律师核实外,我还将与公司法律团队联系。

PS,如果您对此感到非常恐惧,请尽可能将所有相关电子邮件以电子和纸本形式保存在异地。


1

是时候找新工作了。忘了实现这个。现在该出发了。如果他们愿意如此狡猾和狡猾,他们也不会害怕将您扔下公车。

此外,一旦您匿名联系指出人群软件安全漏洞的众多团体之一,请不要害怕。这是一场灾难,等待发生。绝对没有合理的理由来存储这些。老板给你个理由吗 他们想以用户身份登录吗?他们是否想更轻松地检索密码?除非您对上述问题之一有一个可以更安全地解决的答案,否则现在该继续前进了。当您离开时,最好不要告诉他们为什么。


您确实意识到,即使Google也会以纯文本格式存储密码,对吗?如果您是站点的管理员,则可以看到帐户的密码。
apscience 2011年

1
嗯,我不这么认为。您不存储密码。您执行一种不可逆的哈希,并将其存储。这是这样做的标准方法。即使是最近遭到黑客入侵的帐户,也是如此。主要问题是,如果有人得到了哈希并且知道他们是如何生成的,那么就用字典将其击中。但是,不,不,您永远,永远,永远也永远不会存储密码甚至加密的密码。只是问那个麻烦。想知道更多。转到此处:owasp.org/index.php/Main_Page
Bill Leeper

我很确定Google会这么做。如果您是应用程序管理员,则可以查询所有用户密码。请参阅google.com/support/forum/p/Google%20Apps/…,回答#4。
apscience 2011年

1
RTFA。抱歉,您可以以用户身份登录。这是一种具有某些特权的用户可以模拟另一个用户的方法。Google绝对不会给您其他人的密码。您正在使用自己的凭据登录,然后模拟其他用户。这很常见,是我最初的评论的一种解决方案,老板可能想以特定用户的身份登录。
Bill Leeper

0

您可以执行哪些操作来遵循指示以可恢复的格式存储密码,但是如果您对该程序具有完全访问权限,则仍然无法使用非对称加密来进行检索

您使用存储在二进制文件中的公钥对(一如既往地加盐)密钥进行加密

当以纯文本形式需要密码时,人们需要提供私钥,否则私钥应远离服务器


根据需求的原因,这可能无法完全满足OP的上级要求。
的CVn

0

就个人而言,我从未听说过软件工程师,如果没有合同或其他正式协议中的条款,则对其所从事产品的安全问题负有法律责任。根据我对软件工程中的法律和道德规范的了解,系统的安全性要求由要求规范规定,要求规范也指任何法律,行业或公司的要求。在构建系统时,由于未按照指定的方式构建系统,因此无法满足安全要求将被视为未能完成合同条款。特定事件如何进行取决于工程师与雇主之间以及雇主与客户之间的合同。

法律也不会告诉您应该做什么,但不能告诉您应该做什么/不能做什么。您没有提到您所在的行业,但是有些行业确实有关于如何处理特定类型数据的法律,法规和规则-必须加密什么,最低加密级别,管理/控制访问的要求,等等。如果您所在的地区(国家/地区)没有关于安全的规则,您所在的行业没有关于安全的规则,并且软件要求没有提出安全要求或标准,那么这可能是一个道德问题,而不是法律问题。

关于软件开发中的道德问题,我订阅了《软件工程道德与专业守则》。最终,这是您的电话。但是,我认为以纯文本或可以解密的格式存储密码是不道德的。


-3

只要符合您项目的开发过程即可:如果此功能写在需求文档中,则应予以实施。


先生,刚下订单。我不这么认为。聘请程序员思考,提出问题,发挥创造力。像这样糟糕的软件给业界起了坏名声,并危及我们的个人信息。
Bill Leeper

我的回答恰恰相反:如果您的老板与要求矛盾,那么您可以安全地绕过老板。我怀疑在公开的情况下,老板是否会接受他的命令写在要求中。
mouviciel 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.