IdentityUser
и IdentityRole
являются двумя отдельными типами.
Как указывает JamesS, существует сложное соединение между Users
и Roles
. Вы можете найти это в таблице AspNetUserRoles
. Он связывает таблицы AspNetUsers
и AspNetUserRoles
вместе.
Я не думаю, что Entity Framework входит в стандарт ASP.NET CORE 3, но если вы уже используете его, вы можете использовать объект _context
(ApplicationDbContext
) в вашем контроллере, чтобы построить свой список, используя свободный API и Include()
& amp; ThenInclude()
Методы.
В противном случае вы можете просто перейти к хранимой процедуре или просмотреть маршрут в SQL, как предложено.
Однако имейте в виду, что у ApplicationUser
может быть много ролей, поэтому ваше бритвенное представление должно включать вложенный цикл foreach()
.
Работа с версией 3 не для слабонервных, я восхищаюсь вашим усердием.
Реальная безопасность с помощью мрака?
Ключ к парадной двери спрятался под скалой поблизости, или под приветственной заставкой, или сверху высоких направляющих.
Это все экземпляры безопасности через мрак, как в, правильно в открытую для любого захватить, но большинство людей привычка смочь найти его без огромных объемов поиска. Однако преданный взломщик может идти прямо в.
Пример, который я вижу этого все время, является тем, чтобы это было сделанным в исходном коде, что разработчик предполагает, что никто никогда не будет видеть. Вы видите это много с crypto-ключами конкретном, встроили прямо в исходный код. Много времен, это даже не вопрос декомпиляции кода, они могли напрямую просто пользоваться библиотекой.
Решение состоит в том, чтобы всегда учить разработчика предполагать, что кто-то имеет исходный код и может использовать его против Вас.
Хождение на многое для сокрытия названий программного обеспечения и номеров версий.
Т.е. изменение имени сервера Tomcat и версии к некоторым кавычкам и случайным числам (как 666), менять имя и номера версий обычных библиотек JavaScript как scriptaculous и прототип и так далее.
В текущем проекте мы используем Веб-инструментарий Google (GWT), и эта подлая небольшая вещь компилирует Java в JavaScript (который у Вас есть мало ни к какому управлению), и включает строку "GWT" и номер версии. Полностью недопустимый, конечно, таким образом, мы должны будем сделать сценарий, который будет бежать за компиляцией GWT для удаления всех этих ссылок (!).
Один поставщик, с которым мы имеем дело, требует, чтобы мы отправили имя пользователя и пароль в querystring в ГНИЛИ 13 "зашифрованных" форматов. Никакая шутка.
/ администратор без пароля.
Да я видел его, это очень реально.
Назад в старые дни DBase/Clipper я работал на парня, который разработал приложение для друга его. Этот друг хотел иметь некоторую "тайно" доступную программу или данные (я не вспоминаю), который потребовал пароля, только известного ему.
Решение, мне сказали, состояло в том, что Clipper открыл командную строку DOS в секретном каталоге, с черным текстом на черных цветах фона (некоторые управляющие символы ANSI выполнили это).
Пользователь должен был ввести в пароле, но этот вводит строку командной строки DOS, "пароль" был действительно названием пакетного файла, который затем выполнялся.
Я однажды видел веб-сайт фотографии, где Вы могли снять изоляцию с некоторых символов от фото URL изображений миниатюр для получения полной версии.
Много профессиональных веб-сайтов фотографа используют JavaScript, чтобы препятствовать тому, чтобы люди щелкнули правой кнопкой по изображениям для "сохранения как...". Большинство тех сайтов также не делает никакого создания водяных знаков.
Я раньше перемещался с заголовками ссылающегося домена, отключенными... довольно удивительно, сколько веб-сайтов аварийно завершится или утончится, отклоняют Вас, если они не знают, куда Вы произошли из.
Один веб-сайт имел опрос и использовал cookie, чтобы препятствовать тому, чтобы Вы голосовали многократно. Вы могли просто стереть тот cookie и продолжать голосовать. И Вы могли написать сценарий всего этого использование wget
, также.
Замеченный: phpMyAdmin, перемещенный в каталог _phpmyadmin
Улучшение: Запрещенный доступ снаружи сети компании.
Люди, пишущие их пароль на листках бумаги и подвергающие его их клавиатуре.
Я решил его путем вхождения в их компьютер с их учетной записью и посылания смущающего электронного письма группе.
В более "реальном" примере я не знаю, является ли это намеренным или нет, но мне нравится способ, которым ни один из дверных звонков в моем блоке не имеет имен на них, и что их числа, кажется, не имеют никакой корреляции к apartement числам вообще. Т.е. кольцо на № 25 для apartement 605, № 13 для apartement 404 и так далее.:)
Подобный решению @stech.
Некоторые администраторские страницы в нашем приложении в сети, проверьте на локальный диапазон подсети IP, еще отобразите доступ запрещен. К улучшению получают доступ, ограничивается пользователями, которые являются в сети или VPNed к ней.
Замеченный: Веб-сайты используют сложный URL для доступа ajax компоненты, а не на самом деле пароль защищает их, такие как:
domain.com/3r809d8f09feefhjkdjfhjdf/delete.php?a=03809803983djfhkjsdfsadf
строка осталась постоянной, запрос случаен и разработан для остановки взломщиков.
Улучшение: Ограничьте страницу тем, чтобы быть полученным доступ только от определенных IP-адресов. Добавьте строку аутентификации к запросу, который является соленым хешем времени доступа.
Некоторым людям нравится делать их JavaScript трудным читать (и поэтому взломать) при помощи путаницы. Google среди пользователей этой техники. На самом простом уровне они меняют имена переменной и имена методов к единственной непостижимой букве. Первую переменную называют "a", второе называют "b" и так далее. Это действительно преуспевает в том, чтобы делать JavaScript чрезвычайно трудным читать и следовать. И это добавляет некоторую защиту к интеллектуальной собственности, содержавшейся в коде JavaScript, который должен быть загружен на браузер пользователя, чтобы быть применимым, therfore создание его доступный для всех.
В дополнение к созданию помех прочитать код, это сокращение имен переменной уменьшает размер кода JavaScript, который должен быть загружен на браузер пользователя. Теоретически, это может уменьшить сетевой трафик.
Здесь статья о путанице Google и здесь список доступных инструментов.
На веб-сайте я сделал некоторую работу по договору на, я заметил, что они хранили дважды хешированные пароли. Из памяти они хранили что-то как
$encrypted_password = md5( sha1( plaintext_password ) );
Когда я спросил, какова цель этого была, я узнал, что парень, который записал создание/сценарий входа в систему учетной записи, читал об атаках с подбором по словарю. Он полагал, что никто никогда не будет думать для создания словаря, где они хешируют исходные данные с md5 и sha1.
Я улучшил систему путем добавления случайного соленого столбца к их пользовательской таблице. Я оставил двойное хеширование внутри все же. Это не делает ничего для причинения вреда безопасности системы, и честно говоря, я думал, что это было довольно умно для кого-то, кто действительно не знал, что много о безопасности думало об этом.
Защита через скрытность - допустимая тактика. Многие люди отключили предоставление информации о версии в качестве лучшей практики для ftp и apache. Приманки можно считать скрытой практикой, поскольку злоумышленник не знает схемы сети и попадает в нее. На одном известном мне сайте с высоким уровнем безопасности имя пользователя назначается пятизначной буквенно-цифровой фразой (например, «0a3bg») вместо использования логических имен пользователей. Все, что затрудняет взлом системы или делает его более длительным, является допустимой мерой.
Безопасность исключительно через скрытность - это плохо.