Создание и защита кодов подарочных картJAVA

Программисты JAVA общаются здесь
Anonymous
Создание и защита кодов подарочных карт

Сообщение Anonymous »

Я работаю в компании, которая генерирует коды подарочных карт, которые можно использовать для оплаты товаров в интернет-магазинах.

Мне интересно, какой самый безопасный способ создания кодов подарочных карт. Длина должна составлять 16 символов (хотя это обсуждается) и может быть буквенно-цифровой (хотя числовое будет более удобным для пользователя).

Насколько я вижу, самый безопасный способ сделать это — сгенерировать код подарочной карты определенной длины с помощью следующего кода Java:

Код: Выделить всё

static final String AB = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
static SecureRandom rnd = new SecureRandom();

String randomString( int len ){
StringBuilder sb = new StringBuilder( len );
for( int i = 0; i < len; i++ )
sb.append( AB.charAt( rnd.nextInt(AB.length()) ) );
return sb.toString();
}
Это взято из ответа SO здесь. Я удалил строчные буквы из строки, чтобы сделать ее более удобной для пользователя. Таким образом, получается 36 ^ 16 комбинаций. Только числовые комбинации будут составлять 10 ^ 16. Я считаю, что одних цифр будет достаточно, но часто подчеркивают, что, учитывая растущую распространенность мошенничества с подарочными картами, строка должна быть буквенно-цифровой.

Итак, это первый вопрос. : числовое или буквенно-цифровое?

Когда пользователи используют подарочные карты в интернет-магазине для оплаты товаров, выполняется вызов нашего API, который возвращает баланс. и валюта для этой подарочной карты. Поскольку коды подарочных карт вводятся на сторонних серверах, эти подарочные карты теперь доступны людям, имеющим доступ к этим серверам. Это, очевидно, проблема в том случае, когда баланс все еще остается после того, как пользователь частично погасил его.

Один из вариантов — при вызове нашего API (с кодом подарочной карты), чтобы получить баланс, мы возвращаем и сохраняем в их магазине случайную строку, которая может использоваться интернет-магазином только при выставлении нам счета - мы сопоставим ее с кодом подарочной карты на нашем система. Проблема, по-видимому, заключается в том, что код подарочной карты, который пользователь вводит при оформлении заказа, регистрируется где-то в его журналах и доступен любому, у кого есть доступ к этим журналам.

Другой вариант — мы обновляем код подарочной карты после его частичного погашения. Таким образом, пользователю по сути выдается новый код подарочной карты для баланса, а предыдущий аннулируется. Это, вероятно, самый безопасный, но не такой удобный для пользователя вариант.

Итак, это второй вопрос: как защитить коды подарочных карт, которые погашаются лишь частично и они еще имеют ценность?

Подробнее здесь: https://stackoverflow.com/questions/496 ... card-codes

Вернуться в «JAVA»