Как я могу получить количество записей, затронутых хранимой процедурой?

Вопрос должен быть, "сколько предположения необходимы в среднем для нахождения действительного PIN-кода, по сравнению с тем, сколько делают взломщики предположений?"

при генерации 100 000 5-разрядных кодов, тогда очевидно, требуется 1 предположение. Это вряд ли будет достаточно хорошо.

при генерации 100 000 N-разрядных кодов, тогда это берет (n-5) ^10 предположения. Чтобы удаться, достаточно хорошо ли это, необходимо рассмотреть, как система отвечает на неправильное предположение.

, Если взломщик (или, все объединенные взломщики) может высказать 1 000 предположений в секунду, то ясно n должен быть довольно большим для остановки решительного взломщика. При постоянной блокировке их IP-адреса после 3 неправильных предположений то, так как у данного взломщика вряд ли будет доступ к больше, чем, скажем, 1000 IP-адресов, n=9 были бы достаточны для срыва почти всех взломщиков. Очевидно, при направлении с распределенными нападениями или нападениями из ботнета тогда 1 000 IP-адресов на взломщика больше не являются безопасным предположением.

, Если в будущем необходимо выпустить дальнейшие коды (больше чем 100 000), тогда очевидно, Вы облегчаете предполагать допустимый код. Таким образом, вероятно, стоит провести некоторое время, теперь удостоверяясь в Ваших будущих потребностях масштабирования прежде, чем закрепить на размере.

, Учитывая Ваш вариант использования карты царапины, если бы пользователи собираются использовать систему в течение долгого времени, я рекомендовал бы позволить им (или вынудить их) для "обновления" их PIN-кода до имени пользователя и пароля их выбора после первого использования системы. Тогда Вы получаете обычные преимущества имени пользователя/пароля, не отбрасывая простоту первого использования просто ввода числа от карты.

Что касается того, как генерировать число - по-видимому, каждый, который Вы генерируете, Вы сохраните, в этом случае я сказал бы, генерируют их случайным образом и удаляют дубликаты. Если Вы генерируете их использующий какой-либо вид алгоритма, и кто-то выясняет алгоритм, то они могут выяснить действительные PIN-коды. При выборе алгоритма, таким образом, что для кого-то не возможно выяснить алгоритм, то это [почти 110] генератор псевдослучайного числа (другое свойство PRNGs, являющегося этим, они равномерно распределяются, который помогает здесь также, так как это делает его тяжелее для предположения кодов), в этом случае Вы могли бы также просто генерировать их случайным образом.

83
задан OMG Ponies 1 August 2010 в 22:37
поделиться

4 ответа

Зарегистрируйте выходной параметр для хранимой процедуры и установите значение на основе @@ ROWCOUNT при использовании SQL Server. Используйте SQL% ROWCOUNT , если вы используете Oracle.

Помните, что если у вас есть несколько INSERT / UPDATE / DELETE , вам понадобится переменная для сохранения результата из ] @@ ROWCOUNT для каждой операции.

79
ответ дан 24 November 2019 в 08:51
поделиться

@@ RowCount даст вам количество записей, затронутых оператором SQL.

@@ RowCount работает только в том случае, если вы запускаете его сразу после этого. Поэтому, если вы улавливаете ошибки, вы должны делать это в той же строке. Если вы разделите его, вы пропустите тот, который вы поставили вторым.

SELECT @NumRowsChanged = @@ROWCOUNT, @ErrorCode = @@ERROR

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

SELECT @NumRowsChanged = @NumRowsChanged  + @@ROWCOUNT, @ErrorCode = @@ERROR
44
ответ дан 24 November 2019 в 08:51
поделиться

Для Microsoft SQL Server вы можете вернуть переменную @@ ROWCOUNT , чтобы вернуть количество строк, затронутых последним оператором в хранимой процедуре.

8
ответ дан 24 November 2019 в 08:51
поделиться
5
ответ дан 24 November 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: