这不是安全隐患吗?
Isn't this a security risk?
我即将在网站上实施支付。
我见过类似使用此 Javascript 代码的解决方案
function onBuyClicked() {
if (!window.PaymentRequest) {
// PaymentRequest API is not available. Forwarding to
// legacy form based experience.
location.href = '/checkout';
return;
}
// Supported payment methods
var supportedInstruments = [{
supportedMethods: ['basic-card'],
data: {
supportedNetworks: [
'visa', 'mastercard', 'amex', 'discover',
'diners', 'jcb', 'unionpay'
]
}
}];
// Checkout details
var details = {
displayItems: [{
label: 'Original donation amount',
amount: { currency: 'USD', value: '65.00' }
}, {
label: 'Friends and family discount',
amount: { currency: 'USD', value: '-10.00' }
}],
total: {
label: 'Total due',
amount: { currency: 'USD', value : '55.00' }
}
};
// 1. Create a `PaymentRequest` instance
var request = new PaymentRequest(supportedInstruments, details);
// 2. Show the native UI with `.show()`
request.show()
// 3. Process the payment
.then(result => {
// POST the payment information to the server
return fetch('/pay', {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(result.toJSON())
}).then(response => {
// 4. Display payment results
if (response.status === 200) {
// Payment successful
return result.complete('success');
} else {
// Payment failure
return result.complete('fail');
}
}).catch(() => {
return result.complete('fail');
});
});
}
document.querySelector('#start').addEventListener('click', onBuyClicked);
但是 Javascript 中的这段代码对于查看页面源代码的任何人都是完全可见的。
还有更多,假设我想将成功的购买存储到我的服务器。 post 将可见。
这不是安全隐患吗?
有什么方法可以保护它吗?
Isn't this a security risk?
仅当服务器端代码相信客户端提交的成本而不检查它们时。
只要 JS 代码不暴露您应该提供给支付网关的任何凭据,您就是安全的。
所提供的示例是围绕支付请求生态系统构建的,该生态系统是一种收集客户支付凭证的本机浏览器方法。
如果攻击者要从代码中学习您的支付方式,他所能做的所有黑客行为都仅限于支付 - 这很好。
我即将在网站上实施支付。
我见过类似使用此 Javascript 代码的解决方案
function onBuyClicked() {
if (!window.PaymentRequest) {
// PaymentRequest API is not available. Forwarding to
// legacy form based experience.
location.href = '/checkout';
return;
}
// Supported payment methods
var supportedInstruments = [{
supportedMethods: ['basic-card'],
data: {
supportedNetworks: [
'visa', 'mastercard', 'amex', 'discover',
'diners', 'jcb', 'unionpay'
]
}
}];
// Checkout details
var details = {
displayItems: [{
label: 'Original donation amount',
amount: { currency: 'USD', value: '65.00' }
}, {
label: 'Friends and family discount',
amount: { currency: 'USD', value: '-10.00' }
}],
total: {
label: 'Total due',
amount: { currency: 'USD', value : '55.00' }
}
};
// 1. Create a `PaymentRequest` instance
var request = new PaymentRequest(supportedInstruments, details);
// 2. Show the native UI with `.show()`
request.show()
// 3. Process the payment
.then(result => {
// POST the payment information to the server
return fetch('/pay', {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(result.toJSON())
}).then(response => {
// 4. Display payment results
if (response.status === 200) {
// Payment successful
return result.complete('success');
} else {
// Payment failure
return result.complete('fail');
}
}).catch(() => {
return result.complete('fail');
});
});
}
document.querySelector('#start').addEventListener('click', onBuyClicked);
但是 Javascript 中的这段代码对于查看页面源代码的任何人都是完全可见的。
还有更多,假设我想将成功的购买存储到我的服务器。 post 将可见。
这不是安全隐患吗?
有什么方法可以保护它吗?
Isn't this a security risk?
仅当服务器端代码相信客户端提交的成本而不检查它们时。
只要 JS 代码不暴露您应该提供给支付网关的任何凭据,您就是安全的。
所提供的示例是围绕支付请求生态系统构建的,该生态系统是一种收集客户支付凭证的本机浏览器方法。
如果攻击者要从代码中学习您的支付方式,他所能做的所有黑客行为都仅限于支付 - 这很好。