参数在加密和发送之前可以被篡改
Parameters can be tampered with before being encrypted and sent
我想将一个值(比如金额)传递给支付网关。网关为我提供了确保数据安全和防篡改的功能。问题是我从文本框中取了这个数额。通过使用 fiddler 并在请求之前放置一个断点,数据甚至可以在到达服务器之前就被更改,并由 functions.so 加密,现在被篡改的值被发送到支付网关。我正在使用 ASP.net 文本框来取客户想要捐赠的价值。
客户端上的任何内容都可以由客户端修改。该值来自文本框这一事实并不重要。
HTTPS 不会改变客户端可以对其想要的数据进行任何更改的事实。
您要么需要在服务器上对值进行加密和验证,以便客户端无法更改它,要么使用服务器到服务器的通信。
这取决于您构建的应用类型。
如果它类似于购物车(您不希望用户修改其中的值),请将总计存储在服务器上并仅向客户端显示该值。不要使用客户价值进行支付。 HTTPS 不会在这里保护你,因为客户端仍然可以在发送之前修改值。
如果它采用用户提供的价值并对其收费(比如发票系统),那么我假设您信任该用户。在这种情况下,客户端可以修改数据并不重要(这就是您希望他们做的)。在这种情况下,HTTPS 将保护您在客户端和服务器之间传输的数据。在 'on the wire' 中收听的任何人都只会看到加密的流量。
您应该使用 HTTPS 连接到您的服务器(以及从您的服务器到网关),请注意这些限制。
我想将一个值(比如金额)传递给支付网关。网关为我提供了确保数据安全和防篡改的功能。问题是我从文本框中取了这个数额。通过使用 fiddler 并在请求之前放置一个断点,数据甚至可以在到达服务器之前就被更改,并由 functions.so 加密,现在被篡改的值被发送到支付网关。我正在使用 ASP.net 文本框来取客户想要捐赠的价值。
客户端上的任何内容都可以由客户端修改。该值来自文本框这一事实并不重要。
HTTPS 不会改变客户端可以对其想要的数据进行任何更改的事实。
您要么需要在服务器上对值进行加密和验证,以便客户端无法更改它,要么使用服务器到服务器的通信。
这取决于您构建的应用类型。
如果它类似于购物车(您不希望用户修改其中的值),请将总计存储在服务器上并仅向客户端显示该值。不要使用客户价值进行支付。 HTTPS 不会在这里保护你,因为客户端仍然可以在发送之前修改值。
如果它采用用户提供的价值并对其收费(比如发票系统),那么我假设您信任该用户。在这种情况下,客户端可以修改数据并不重要(这就是您希望他们做的)。在这种情况下,HTTPS 将保护您在客户端和服务器之间传输的数据。在 'on the wire' 中收听的任何人都只会看到加密的流量。
您应该使用 HTTPS 连接到您的服务器(以及从您的服务器到网关),请注意这些限制。