Показать сообщение отдельно

  #3  
Старый 25.11.2024, 09:07
stool
Постоянный
Регистрация: 06.03.2024
Сообщений: 482
С нами: 1153270

Репутация: 68
По умолчанию

ммм однофайловый бот на пятоне...

хоть бы зависимости указал и токен в dotenv вывел

нет адекватной обработки исключений

нет проверок наличия пользователя в бд при попытке добавить\убрать админа, то же самое в gift и bonus

в gift нет адекватной проверки баланса, я могу гифтануть пользователю охуевшее количество поинтов, вогнав себя в минус, а пользователю выдав несуществующие поинты

отсутствует логгирование

зачем-то блять ты объявил функцию init_db и сразу же её вызываешь в начале кода, хотя мог бы просто выполнить создание таблиц в базе без объявления функции)))

метод register_player уязвим к sql инъекции, поле first_name практически всё что угодно может содержать, чем я и могу сломать тебе бд

ставишь себе в телеге имя "Имя'); DROP TABLE players; --", регаешься в боте и скрипт выполняет вот такой запрос:

Python:





Код:
INSERT OR IGNORE INTO players
(
user_id
,
first_name
,
score
)
VALUES
(
'12345'
,
'Имя'
)
;
DROP TABLE players
;
-
-
'
,
0
)


^ может быть что я в шары долблюсь и такой пример к sql-инъекции не приведёт, но я бы перестраховался, использовав кодирование символов\экранизацию\ченит ь еще, ибо я всё же не пентестер и опыта разъёбывания sql баз у меня почти что нет, зато легко может разъебать кто-нибудь помудрее меня

кстати, а почему у тебя user_id и chat_id это столбцы с типом TEXT, а не INTEGER & UNIQUE? у тебя же айдишники только числовые, текстовыми они никогда не станут

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

удачи)
 
Ответить с цитированием