Мы можем использовать Java 8, используя:
classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version
apply plugin: 'me.tatarka.retrolambda'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Учитывая надлежащие условия, выявление идентификаторов не является угрозой безопасности. И, на практике, было бы чрезвычайно обременительно создавать веб-приложение без раскрытия идентификаторов.
Вот несколько хороших правил:
Общая мысль идет по этим строкам: «Раскрывайте как можно меньше информации о внутренней работе вашего приложения для кого-либо».
Выявление идентификатора базы данных как раскрытие некоторой информации.
Причин для этого является то, что хакеры могут использовать любую информацию о ваших внутренних действиях ваших приложений, чтобы напасть на вас, или пользователь может изменить URL-адрес, чтобы попасть в базу данных, которую он / она не должен видеть?
Если вы используете идентификаторы целых чисел в своем db, вы можете облегчить пользователям просмотр данных, которые им не следует, изменяя переменные qs.
Например. пользователь может легко изменить параметр id в этом qs и посмотреть / изменить данные, которые они не должны http: // someurl? id = 1
Мы используем идентификаторы GUID для идентификаторов базы данных. Утечка их намного менее опасна.
Когда вы отправляете идентификатор базы данных своему клиенту, вы принудительно проверяете безопасность в обоих случаях. Если вы держите идентификатор в своем веб-сеансе, вы можете выбрать, хотите ли вы это сделать, что означает потенциально меньшую обработку.
Вы постоянно пытаетесь делегировать вещи своему управлению доступом;) Это может быть в вашем приложении, но я никогда не видел такой последовательной внутренней системы за всю свою карьеру. Большинство из них имеют модели безопасности, которые были предназначены для использования не в Интернете, а некоторые из них добавили дополнительные роли посмертно, а некоторые из них были заперты за пределами базовой модели безопасности (поскольку роль была добавлена в другом операционном контексте, скажем, перед веб-сайтом).
Таким образом, мы используем синтетический локальный идентификатор сеанса, потому что он скрывает столько, сколько мы можем уйти.
Существует также проблема нецелочисленных ключевых полей, что может иметь место для перечисленных значений и тому подобное. Вы можете попытаться дезинформировать эти данные, но, скорее всего, вы окажетесь как маленькие таблицы для удаления bobby .
Несмотря на отсутствие риска безопасности данных , это абсолютно опасный риск безопасности бизнес-аналитики , поскольку он предоставляет как размер данных, так и скорость. Я видел, как предприятия получают от этого вред и написали об этом анти-шаблоне в глубину. Если вы просто не строите эксперимент, а не бизнес, я бы настоятельно предложил сохранить ваши личные идентификаторы вне поля зрения общественности. https://medium.com/lightrail/prevent-business-intelligence-leaks-by-using-uuids-instead-of-database-ids-on-urls-and-in-apis-17f15669fd2e