Php 在数据到达服务器之前对其进行加密

Php 在数据到达服务器之前对其进行加密,php,javascript,security,browser,encryption,Php,Javascript,Security,Browser,Encryption,假设我有一个PHP应用程序,希望在用户数据进入服务器之前对其进行加密(以向用户证明他们的数据不会被挖掘或转售用于广告) 这里有人问了类似的问题(),这意味着这是行不通的,但随着NSGT用户隐私兴趣的增加,这一要求只会随着时间的推移变得越来越高 例如,使用Stanford library()一个web表单有一个附加的“长”密码字段,用户可以粘贴在其中(例如,可能来自电子邮件) 加密的数据被发送到PHP页面,加载页面时,该过程被反转 如果用户使用Chrome浏览器或另一个能够记住表单值的浏览器,这会

假设我有一个PHP应用程序,希望在用户数据进入服务器之前对其进行加密(以向用户证明他们的数据不会被挖掘或转售用于广告)

这里有人问了类似的问题(),这意味着这是行不通的,但随着NSGT用户隐私兴趣的增加,这一要求只会随着时间的推移变得越来越高

例如,使用Stanford library()一个web表单有一个附加的“长”密码字段,用户可以粘贴在其中(例如,可能来自电子邮件)

加密的数据被发送到PHP页面,加载页面时,该过程被反转

如果用户使用Chrome浏览器或另一个能够记住表单值的浏览器,这会起作用吗?显然,这不是一个安全的结果,但这是否足够有效,可以让用户的信息在主机服务器上保持私有


编辑:我只想说清楚,我只想让主机服务器看不到这些信息,而且我知道这个解决方案不会防止第三方攻击

对页面的保护是无用的,简单来说,加密密钥/机制也将在页面范围内,因此可能被恶意方(或用户在检查页面时自己)篡改

为了避免数据未加密地越过行,也没有理由“滚动您自己的”(tm),因为有SSL


如果您想确保服务器上接收的数据实际上来自您控制的页面,您可以依赖CSRF保护。

页面上的保护是无用的,因为加密密钥/机制也将在页面范围内,因此可能被恶意方篡改(或在检查页面时由用户自己执行)

为了避免数据未加密地越过行,也没有理由“滚动您自己的”(tm),因为有SSL


如果您想确保在服务器上接收的数据实际上来自您控制的页面,您可以依赖CSRF保护。

首先使用SSL,这是安全通信的唯一方式。如果您使用JavaScript进行加密,则对消息进行解密是很简单的(因为所有带密钥的代码都是公共的)


如果您担心CFRS攻击,请使用防伪令牌(更多信息:)

首先使用SSL,这是安全通信的唯一方式。如果您使用JavaScript进行加密,则解密消息很容易(因为所有带密钥的代码都是公开的)

如果您担心CFRS攻击,请使用防伪令牌(更多信息:)

是浏览器中javascript加密几乎总是一个坏主意的一系列原因

您需要深入思考您的信任模型。用户信任服务器吗?如果不信任,就不可能有可信的javascript加密,因为加密软件本身来自服务器。如果用户信任服务器,为什么需要在客户端加密数据?只需使用SSL来保护连接,然后让服务器加密在存储数据之前对其进行加密。

是浏览器中javascript加密几乎总是一个坏主意的一系列原因


您需要深入思考您的信任模型。用户信任服务器吗?如果不信任,就不可能有可信的javascript加密,因为加密软件本身来自服务器。如果用户信任服务器,为什么需要在客户端加密数据?只需使用SSL来保护连接,然后让服务器加密在存储数据之前对其进行加密。

这是完全可能的,例如,在其上构建业务模型。他们的服务器所做的只是存储一个加密的blob,而他们对此无能为力,所有加密和解密都在客户机上进行;包括浏览器中的Javascript实现。整个blob的加密数据下载到客户端,用户的密码在客户端解密;反过来,在返回服务器的过程中


因此,如果您的问题是是否可能:当然。这也需要大量的工作,因为您需要为您想要支持的尽可能多的平台提供相同的en-/解密代码。您还需要保护代码运行的每个上下文,以防止第三方注入允许他们访问cli的代码ent端解密数据。因此,一切都需要通过SSL进行,不允许注入第三方内容。

完全有可能做到这一点,例如,在其上构建业务模型。他们的服务器所做的只是存储一个加密的blob,他们无法对其执行任何操作,所有加密和解密都在客户端进行;包括在浏览器中使用Javascript实现。整个加密数据块被下载到客户端,用户的密码在客户端解密;反过来,在返回服务器的过程中


因此,如果您的问题是是否可能:当然。这也需要大量的工作,因为您需要为您想要支持的尽可能多的平台提供相同的en-/解密代码。您还需要保护代码运行的每个上下文,以防止第三方注入允许他们访问cli的代码ent端解密数据。因此,所有内容都需要通过SSL,不允许注入第三方内容。

希望用户数据在进入服务器之前进行加密(向用户证明他们的数据不会被挖掘或转售用于广告)太棒了!不要自己加密,使用SSL@N.B.是的,这正是我想要的-我的应用程序只会看到我看不到的加密数据。我知道很多(较老的)业务用户非常喜欢这个功能,如果它可以实现的话。它可以实现,但是出现了新的问题。你问的只是加密数据
  sjcl.encrypt(txtPassword, txtFormFieldToBeEncrypted)