Javascript 我可以使用JS加密代替SSL进行信用卡支付吗?

Javascript 我可以使用JS加密代替SSL进行信用卡支付吗?,javascript,security,encryption,ssl,payment,Javascript,Security,Encryption,Ssl,Payment,我有一个HTML表单,人们可以在我的网站上付款。我想知道我是否可以使用JS库来加密信用卡信息,并将其以明文形式发送到服务器,而不是服务器解密,而不是使用SSL。我发现有几个lib可以做到这一点,它们基本上从服务器请求密钥对,对其进行加密并将其加密发送到服务器。这些就是我发现的: 这对信用卡支付足够安全吗?我知道会话没有加密,但真正重要的是信用卡信息,对吗?你可以这样做,但不要这样做。它需要客户端上的javascript,当您获得加密部分时,您可能会丢失SSL的另一部分,即身份验证。使用您的

我有一个HTML表单,人们可以在我的网站上付款。我想知道我是否可以使用JS库来加密信用卡信息,并将其以明文形式发送到服务器,而不是服务器解密,而不是使用SSL。我发现有几个lib可以做到这一点,它们基本上从服务器请求密钥对,对其进行加密并将其加密发送到服务器。这些就是我发现的:


这对信用卡支付足够安全吗?我知道会话没有加密,但真正重要的是信用卡信息,对吗?

你可以这样做,但不要这样做。它需要客户端上的javascript,当您获得加密部分时,您可能会丢失SSL的另一部分,即身份验证。使用您的方法,中间人攻击是可能的,而使用SSL证书则不太可能。p> 您可以使用JS加密并选择忽略它不安全的事实


问题是人们不希望在没有SSL连接的页面上输入他们的信用卡详细信息。不仅仅是技术人员;许多非技术用户知道在输入信用卡号之前要查找挂锁,即使他们不知道TLS或SSL是什么。

如果用户在浏览器中禁用JavaScript怎么办?我想说的是,安全起见,坚持使用SSL。

一点也不。请记住,SSL还允许客户端(浏览器)验证远程方(服务器)的真实性。您必须确保从中获取密钥的服务器实际上是您想要从中获取密钥的服务器,而不是完全不同的机器。(cf.)

否。不要使用javascript保护信用卡付款。 如果你这样做了,那么有人复制你所有的源代码,然后毒害DNS缓存,甚至设置钓鱼网站,并将你用户的付款发送到他们的银行帐户,这将是微不足道的

下面是一个场景

  • 您可以完成您的网站example.com,并将所有内容联机。网站发布,耶。您已经使用javascript保护您的信用卡支付系统

  • 一个叫Nefarious Hacker的人注意到你没有使用一种可靠的方法来保护重要的个人信息,所以他下载了你所有的HTML、JS和CSS

  • 黑客去掉了所有基于js的加密,只留下表单。然后他在evil-example.com上主持了这个节目。它看起来和你的网站一模一样,行为也和你的网站一模一样。除了将未加密的信用卡数据提交给N Hacker的数据库

  • 黑客发送一些网络钓鱼电子邮件,将用户指向evil-example.com。一些用户认为这个邪恶的网站是有效的,于是提交了付款。他们的信用卡现在被偷了

  • 黑客能够成功毒害DNS缓存,因此一些前往example.com的用户会被提供给evil-example.com。他们没有理由相信网站是假的(url是他们所期望的),所以他们提交了付款。他们的卡现在被偷了

  • 如果您有SSL证书,用户会立即知道evil-example.com不受信任,或者evil-example.com冒充example.com是假的

    (我会把它做大,让它变得明显)


    一句话-javascript不够安全,无法进行抄送支付。@stimms很好地解释了为什么这是危险的-SSL既可以进行加密,也可以确保加密的数据也可以到达正确的位置。最重要的是,浏览器对待SSL和非SSL缓存的方式有所不同——如果您不是通过SSL为这些页面提供服务,那么用户的浏览器可能会将重要信息存储在用户计算机上的clear中

    即使完全安全,这也不是一个好主意。许多用户的大脑中已经钻研了一条规则“寻找电子商务的锁图标”,这条规则是由IT人员、精通技术的亲戚等钻研出来的


    编辑:另一个潜在问题-大多数信用卡公司要求通过SSL传输。仅使用JS可能会违反您的商户协议-可能会导致罚款和终止。

    避免SSL的成本是不值得的。

    除了其他人提出的观点之外,SSL是一个既定的标准,每个Web浏览器都内置了对该标准的支持。浏览器GUI会以某种方式更改,让我知道我正在使用安全连接,如果需要,我可以检查证书详细信息


    浏览器不支持任何您自己提出的方案。

    这在任何方式、形状或形式上都是不安全的

    中间人可以用自己的公钥替换公钥。您使用“referer”或SSL以外的任何其他工具设计的任何混乱都不会恢复这个残暴方案的安全性

    当你可以免费得到一张边缘证书,或者一张像样的证书几乎什么都没有的时候,你为什么还要乱用别人的信用卡号呢?由于在传输过程中未能获得信用卡号,您就违反了PCI,并且可能使自己承担的责任比获取和使用证书的成本高出许多倍。或者你只是认为这是持卡人的问题

    不能完全在带内引导安全通道。您需要一些安全介质来交换密钥材料。这可能是认证机构公钥的分发。或者是面对面地会面,分享一把秘密钥匙


    不管是什么方案,你都不能因为不安全而建立安全。

    Ggolo,说真的,伙计,不要这样做。任何传递信用卡详细信息的网站都会引起黑客的注意,如果他们足够努力的话,他们会在你的手动方法中发现一些错误或漏洞。只需支付SSL证书的费用。