Комментарии 15
Надеюсь разрабатывал ты лучше, чем оформлял статью :)
А где у вас проверка хоста, что-то не вижу... И да, кто-то вам позволял хранить данные "клиентов"?
Вроде тут есть:
Начиная с 16 строки
// Pattern for valid url path
// example: /covid-cert/verify/****************, where ***************** - certificate id
// example: /covid-cert/status/************************************, where ************************************ - hash sum
// example: /vaccine/cert/verify/************************************, where ************************************ - hash sum
private static final Pattern urlPathPattern = Pattern.compile(
"^/[\b(covid\\-cert)|(vaccine)\b/]+/[\b(verify|status|cert/verify)\b/]+/[^/]+[a-zA-Z0-9]$"
);
// Pattern for valid url domain
private static final Pattern validUrlDomain = Pattern.compile(
"^www.gosuslugi.ru$"
);
// function to check if qr contains url
public boolean isURL(String str){
if (urlPattern.matcher(str).matches())
return true;
else
return false;
}
То есть проверки нет. Например, я регистрирую домен example.club, на нём делаю поддомен www.gosusugi.ru.example.club - и оно успешно проходит проверку
имхо www.gosusugi.ru.example.club не пройдет проверку
Да, ваша правда, не увидел что там $ и ^
А вот например такой wwwxgosuslugi.ru , полагаю, пройдет - ведь точки не экранированы, и означают любой символ (хотя я не спец в джаве, может быть там как-то по-другому работает)
По идее должно быть так:
^www\.gosuslugi\.ru$
Судя по всему, автор не хочет признавать валидным и сайт без www...
- Пилить строковые ресурсы в коде — плохо
- Ходить в файловую систему из UI-потока — очень, очень плохо
- Ходить в сеть через HttpUrlConnection в 2022 — выглядит как особая форма мазохизма
- Открыто хранить данные — идея сомнительная, особенно в простом файле на диске
- Чем костылить хранение табличных данных в текстовом файле — почему не использовать базу
- Волшебные константы, волшебные константы повсюду
- Всё навалено в кучу, ни архитектуры, ничего
- Не умеете пользоваться switch
- При проверке на переиспользование в упор не вижу проверку на интервал. Даже если совпадение было месяц назад — всё равно будет «был использован сегодня»
Главное, помогать сегрегации - очень плохо
1) qr-код не является антиковидной мерой, и любой здравомыслящий человек должен это понимать.
2) если глупый раб с со стокгольмским синдромом сам решил свой металлический механический ошейник поменять на электронный, который надежней, - пусть оставит его реализацию для себя и своего хозяина. Или ложится в палату, где чатлане и пацаки - это норма. В массы рабство нести не надо, даже если очень хочется выслужиться перед господином! А то ведь служить можно как Богу, так и сатане
Хранить данные в текстовом файле... Это конечно сильно. Ну да ладно. Не это меня больше всего зацепило.
В первую очередь в глаза бросился бардак с самими сертификатами. Три разных формата ссылок в сертификатах (и не факт, что это полный набор, там где три там и четыре и пять, просто возможно они ещё не попадались). Не ужели утвердить единый формат QR кодов это так сложно? Вот по одному только этому факту можно понять какой бардак творится среди разработчиков сервиса. Выглядит так, как будто бы там несколько комманд разработчиков, которые между собой ни как не взаимодействуют. Из за чего каждый делает свой костылесипед.
Разработка Android-приложения на Java для верификации QR-кодов сертификатов вакцинации