Size: a a a

Node.js — русскоговорящее сообщество

2020 April 23

V

Victor in Node.js — русскоговорящее сообщество
возьми nanoid в npm от Ситника
а в бд поставь на поле uniq
источник

f

fivem in Node.js — русскоговорящее сообщество
Mike Mulukin
(Math.trunc(Date.now()/100)).toString(24)
Перебрать такое на раз-два
источник

т

тим in Node.js — русскоговорящее сообщество
fivem
Привет, хочу сделать короткие ссылки на сайте с длиной кода например 8 символов и алфавитом [a-zA-Z0-9]. Нужно чтобы короткую ссылку было почти невозможно перебрать. Генерить рандомно код и каждый раз проверять его на коллизии в бд не очень хочется. Насколько понимаю, решение в том, чтобы завести какой-то счетчик, который каждый раз увеличивать и это значение прогонять через какое-либо поточное шифрование вроде RC4, только он ненадеждный. В какую сторону посоветовали бы копать? Или может есть более интересный алгоритм?
Тупая идея, конечно

var current_date = (new Date()).valueOf().toString();
var random = Math.random().toString();
crypto.createHash('sha1').update(current_date + random).digest('hex');

И потом вырывай из рандомной части 8 символов
источник

JP

Joe Pesci in Node.js — русскоговорящее сообщество
fivem
Привет, хочу сделать короткие ссылки на сайте с длиной кода например 8 символов и алфавитом [a-zA-Z0-9]. Нужно чтобы короткую ссылку было почти невозможно перебрать. Генерить рандомно код и каждый раз проверять его на коллизии в бд не очень хочется. Насколько понимаю, решение в том, чтобы завести какой-то счетчик, который каждый раз увеличивать и это значение прогонять через какое-либо поточное шифрование вроде RC4, только он ненадеждный. В какую сторону посоветовали бы копать? Или может есть более интересный алгоритм?
Рандомная соль + шифрование?
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
Ребят,я снова с ошибками express.Есть контроллер и сервисы которые он дергает.В контроллерах все обернуто в try/catch и в catch возвращаю ошибку через next.В сервисах выбрасываю через throw new Error. Почему ошибки сервисов просто в конслоь выбрасываются и не обрабатываются мидлварой ,которая ловит ошибки?
источник

т

тим in Node.js — русскоговорящее сообщество
Короче, если кому-то будет нужно, в любом случае можно будет перебрать
источник

т

тим in Node.js — русскоговорящее сообщество
Ну, если будут генерить примерно 10 лямов ссылок в секунду, то чтоб перебрать вообще все возможные уйдёт 529 суток
источник

т

тим in Node.js — русскоговорящее сообщество
Обманул
источник

т

тим in Node.js — русскоговорящее сообщество
252 дня
источник

JP

Joe Pesci in Node.js — русскоговорящее сообщество
тим
Короче, если кому-то будет нужно, в любом случае можно будет перебрать
Можно брать просто рандомную соль и конвертить ее в строку 32 символа, к примеру. А так, если кто-то брутит, то по большей части это уже задача фильтров бека
источник

т

тим in Node.js — русскоговорящее сообщество
Так надо же короткие
источник

JP

Joe Pesci in Node.js — русскоговорящее сообщество
Ну тогда хз, короткие сильно ограничены конечно
источник

т

тим in Node.js — русскоговорящее сообщество
Можно на бэке ограничивать количество запросов в секунду
источник

JP

Joe Pesci in Node.js — русскоговорящее сообщество
Для конкретных кликов*
источник

т

тим in Node.js — русскоговорящее сообщество
Главное не по ипу)))
источник

JP

Joe Pesci in Node.js — русскоговорящее сообщество
Ну тут скорее по отпечатку
источник

IK

Iliya Kobaliya in Node.js — русскоговорящее сообщество
Ребят,что не так я делаю с обработкой ошибок?
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
Iliya Kobaliya
Ребят,что не так я делаю с обработкой ошибок?
без кода не понять
источник

f

fivem in Node.js — русскоговорящее сообщество
тим
Тупая идея, конечно

var current_date = (new Date()).valueOf().toString();
var random = Math.random().toString();
crypto.createHash('sha1').update(current_date + random).digest('hex');

И потом вырывай из рандомной части 8 символов
На коллизии все равно чекать нужно. Пока склоняюсь к варианту - рандомно генерить    код и проверять. Флаг uniq на поле в бд кинет ошибку если будет коллизия, засунуть генерацию кода + вставку в бд в цикл.
Просто думаю может есть вар-т который будет давать на выходе гарантированно уникальный и стойкий к перебору код.
источник

PS

Pavel Shakhov (pongo... in Node.js — русскоговорящее сообщество
fivem
На коллизии все равно чекать нужно. Пока склоняюсь к варианту - рандомно генерить    код и проверять. Флаг uniq на поле в бд кинет ошибку если будет коллизия, засунуть генерацию кода + вставку в бд в цикл.
Просто думаю может есть вар-т который будет давать на выходе гарантированно уникальный и стойкий к перебору код.
даже у UUID есть небольшой шанс коллизий
источник