我刚刚在我的网上商店中发现了重大的安全漏洞?

信息安全 应用安全 Web应用程序
2021-08-24 14:18:33

这里有一点背景信息:我是一名自学成才的 Web 开发人员,在 html/css 之外几乎没有经验,我工作的公司聘请了一个第三方 Web 开发团队来为我们设计一个电子商务网站。无论如何,我今天使用 TamperData Firefox 插件对该站点进行了 beta 测试,我发现了两个主要的设计缺陷,它们都涉及 HTTP 标头。

第一个缺陷是,当我们的网站要求用户选择运费选项(陆运、快递等)时,网站会将计算出的运费值在 HTTP 标头中传回服务器。通过操作标头,我能够修改(参见:擦除)运费值,因此后端将计算的运费值解释为 0,因此它不向我收取运费!

然而,第二个缺陷要严重得多......当计算总产品价值并“结帐”时,所有交易信息(CC#、CVV2、到期、$ 总计)通过以下方式传递给第三方商家处理器HTTP 标头。再一次,我使用 TamperData 并能够操纵标头,以便发送给商家的 $ 值是微不足道的(我选择 $1 进行测试)。

事实上,我——在网站安全或服务器端编码方面完全没有经验——能够发现这些严重的缺陷让我完全害怕,因为这对设计这个的程序员来说意味着什么?当然,他们可能会以某种方式解决这两个问题。但是,如果在纯文本 HTTP 标头中发送信用卡数据对他们来说是个好主意,那么他们的新解决方案实际上会更安全吗?如果我错过了其他完全独立的攻击媒介怎么办?

因此,我的问题是:

  1. 鉴于上述信息,您将采取哪些措施来避免这些安全漏洞?(所以我知道要求我们的程序员做什么)

  2. 有哪些书籍、网站和/或资源可供我自学网络安全以及如何进行实际渗透测试?我的公司需要一些时间来安排外部安全审计,在此期间我想尽可能多地修复网站。

更新

正如我在下面的评论中所说,我很想知道将 http 标头中的付款信息传输给 cc 商家的安全性(如果重要的话,我们正在使用 https 连接)。第三方可以窃听或拦截这些数据包吗?如果他们可以,这是一个现实的场景,还是极不可能?我问这个是因为我还没有很好地理解通过 HTTP 标头传输数据的工作原理,至少在技术层面上是这样。

这个问题是本周的 IT 安全问题
阅读 2011 年 8 月 12 日的博客文章了解更多详情或提交您自己的本周问题。

4个回答

几个建议:

1) 不要从头开始建立网站,除非一种新的电子商务是你的秘诀。有很多经过验证的解决方案——ebay、带有购物车插件的 wordpress、带有插件的 drupal 等。自己动手是一种被黑客入侵的快速方法。

2) 在收集任何卡或身份信息之前,请务必重定向到安全的支付处理器。PayPal 和 Google Checkout 都提供了带有 API 的出色门户,可以轻松安全地销售商品并重定向回您的网站。

3) 许多托管公司(GoDaddy、volusion 等)提供交钥匙设置,因此您所要做的就是填写目录、选择样式、运送东西并去银行。

我给你的建议是:在产品完成后聘请一家安全公司对产品进行渗透测试。如果可能,请在与开发人员的合同中获得安全要求,因此他们将有义务修复所有安全问题,就好像它们是正常的错误一样(阅读:免费)。这听起来可能有点矫枉过正,但恕我直言,如果去年教会了我们什么,那就是 webapp 安全性现在应该是默认设置。

您可以自己提出一些安全要求,并在其他答案中使用这些要求,但如果您没有接受过该领域的教育,您将无法对其进行全面的安全审核。所以不要依赖它。您可以修复支付系统,但未修补一些大型 SQL 注入或上传文件执行。

用户可以篡改任何用户提供的数据。如果这些是站点中唯一的问题,那么您应该认为自己非常幸运。但它们表明交付的产品缺乏质量。

曾与从简单的兼职妈妈+流行网上商店到大型金融机构的公司合作,我了解到的一件事是,IT 外包很少符合企业的利益。作为最低要求,您必须有经验丰富的 IT 人员积极参与指定产品合同以及指定功能。我敢打赌,在这种情况下,合同在成本和交货时间方面很长,但在质量、合规性和保修方面几乎没有条款。

您描述的两个缺陷虽然都是由数据篡改引起的,但完全不同。在第一种情况下,由于可能存在会话,因此无需首先将数据往返发送到浏览器。但是对于这两个问题,您是否检查过这些更改在处理的后期没有被拾取?

两者的解决方案是相同的 - 将金额(或计算金额所需的详细信息)存储在您的服务器上,并在操作完成时检查浏览器返回的金额是否不同。例如,在生成运费选项页面时,存储用于计算运费的指标(例如重量),然后当您获得运输方式和金额时,根据存储的重量和提供的运输方式计算预期金额。

虽然不费心直接从页面返回金额或忽略此金额似乎更简单,但如果您的网站已经在页面上告诉客户运费将是多少(例如使用 javascript 计算),您需要确保对于合法交易,客户账单上出现相同的值!

即这些都是要解决的微不足道的问题。

但正如您所暗示的,通过不安全的渠道发送信用卡信息是非常严重的,可能是非法的疏忽。这是第三个也是迄今为止最严重的缺陷。

所有的软件都有缺陷,但这些都对开发人员的能力产生了非常严重的怀疑,并表明你只是触及了这个产品问题的表面。

顺便说一句:即使使用 SSL,我也会在很少的网站上输入我的信用卡详细信息。有几家知名公司为支付处理提供完整的解决方案,例如 Paypal、Worldpay、Google,其中商家无法直接查看我的信用卡详细信息。

要了解有关网站安全的更多信息,您会在 sans.org 和 owasp.org 上找到很好的介绍材料(和一些更高级的东西)

答案是http://www.owasp.org上的“OWASP”或“Open Web Application Security Project” 。这些人是理解困扰 Web 应用程序的典型漏洞(如此类)的标准。

您还问“这对程序员有什么影响”,他们可能有如此微不足道的错误。您的问题的答案是,大多数 Web 应用程序程序员并不真正了解发生了什么。他们不相信黑客可以在传输过程中更改 HTTP 标头。

目前,新闻中出现了很多备受瞩目的黑客攻击(“LulzSec”)。这些孩子不是在做复杂的黑客攻击,而是在做一些简单的事情,比如在提交数据时编辑 HTTP 标头。