Bir satın alma işlemi gerçekleştirmeden önce yapmak isteyebileceğiniz kişi, kullanıcı kimliğini istemciden sunucunuza güvenli bir şekilde geçirerek ve kullanıcı kimliğine göre doğrulayarak kullanıcının kimliklerini beklediğini doğrulamaktır. kayıtlı kimlik bilgileri için. Bu, bir saldırganın oturumunu ele geçirerek sitenizin kullanıcısı gibi davrandığını ve kullanıcının ödeme yapmadan önce yapması gereken en uygun çeke sahip olduğu tekrar saldırılarına karşı ek koruma sağlar.
Sadece kullanıcı doğrulama işlemine dolandırıcılıktan korunma mekanizması olarak güvenmem. Google Commerce platform gibi güvenli bir ödeme sistemi kullanmalı ve the best practices for commerce'u takip etmelisiniz.
Bir hatırlatma olarak, önbelleğe alınmış kimlik bilgileri her başlatıldığında belirtecinizi kontrol etmek için OAuth2 v2 uç noktası kullanılmalıdır. Her isteğin kontrol edilmesi biraz aşırı görünüyor çünkü sunucu tarafında zaten doğrulanmış ve depolanmış olan önbelleğe alınmış kimlik bilgilerini kullanmanız gerekir. En çok, bir erişim belirtecini güncellediğinizde kontrolleri gerçekleştirebilirsiniz, ancak yenileme kodunuza güveniyorsanız, hesabı oluşturduğunuzda ve bu yenileme kodunu belirlerken çekleri gerçekleştirirseniz, yeterince güvenli olmanız gerekir.
Aşağıdaki adımlar hesap oluşturduktan sonra kullanıcı kimliği doğrulama ek olarak alınır:
- istemcisi olmasını bekliyoruz kim olduğundan emin olun. Bu, kota kullanarak saldırgan adına etkili bir şekilde istek oluşturmak için uygulamanıza geçirilen sahte erişim jetonlarına karşı sizi korur.
- Bir kullanıcı adına ek hesapların oluşturulduğu durumlarda, hesabınızın bu uygulama tarafından oluşturulduğunu doğrulayın, bu protects you and your users against cross-site request forgery.
Bağlantınıza gönderilen postada belirtildiği gibi, the Google+ quickstarts'daki örnek kod, bu denetimleri, hesap yetkilendirmesi için çeşitli programlama dillerinde nasıl gerçekleştireceğini yeterince göstermelidir. HTML/JS istemcisi içinde
, aşağıdaki kod gösterir nerede userId (değer, özel dize "Bana" aksine) Google+ userId doğrulamak için bağlantı yöntemine geçmek için alınır:
var request = gapi.client.plus.people.get({'userId' : 'me'});
request.execute(function(profile) {
$('#profile').empty();
if (profile.error) {
$('#profile').append(profile.error);
return;
}
helper.connectServer(profile.id);
$('#profile').append(
$('<p><img src=\"' + profile.image.url + '\"></p>'));
$('#profile').append(
$('<p>Hello ' + profile.displayName + '!<br />Tagline: ' +
profile.tagline + '<br />About: ' + profile.aboutMe + '</p>'));
if (profile.cover && profile.coverPhoto) {
$('#profile').append(
$('<p><img src=\"' + profile.cover.coverPhoto.url + '\"></p>'));
}
});
... ve aşağıdaki kod, geçirilen Google+ kimliğini gösterir.aşağıdaki gibi Java numunede Bu kontrolleri gerçekleştiren
connectServer: function(gplusId) {
console.log(this.authResult.code);
$.ajax({
type: 'POST',
url: window.location.href + '/connect?state={{ STATE }}&gplus_id=' +
gplusId,
contentType: 'application/octet-stream; charset=utf-8',
success: function(result) {
console.log(result);
helper.people();
},
processData: false,
data: this.authResult.code
});
}
ilgili kodudur:
örneklerde
// Check that the token is valid.
Oauth2 oauth2 = new Oauth2.Builder(
TRANSPORT, JSON_FACTORY, credential).build();
Tokeninfo tokenInfo = oauth2.tokeninfo()
.setAccessToken(credential.getAccessToken()).execute();
// If there was an error in the token info, abort.
if (tokenInfo.containsKey("error")) {
response.status(401);
return GSON.toJson(tokenInfo.get("error").toString());
}
// Make sure the token we got is for the intended user.
if (!tokenInfo.getUserId().equals(gPlusId)) {
response.status(401);
return GSON.toJson("Token's user ID doesn't match given user ID.");
}
// Make sure the token we got is for our app.
if (!tokenInfo.getIssuedTo().equals(CLIENT_ID)) {
response.status(401);
return GSON.toJson("Token's client ID does not match app's.");
}
// Store the token in the session for later use.
request.session().attribute("token", tokenResponse.toString());
return GSON.toJson("Successfully connected user.");
} catch (TokenResponseException e) {
response.status(500);
return GSON.toJson("Failed to upgrade the authorization code.");
} catch (IOException e) {
response.status(500);
return GSON.toJson("Failed to read token data from Google. " +
e.getMessage());
}
, ClientID Google API konsolundan geldi ve uygulamanız için ayrı olacaktır.
İlgili bir soru yayınladım çünkü Facebook API'yla bunu yapmanın standart yolu, signed_request parametresini kullanmaktır, ancak Google'ın bir karşılığı olmadığı anlaşılıyor. http://stackoverflow.com/questions/15395142/does-google-javascript-api-have-an-equivalent-to-facebooks-signed-request –