Инструменты пользователя

Инструменты сайта


wiki:devel:security

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
wiki:devel:security [2025/01/03 17:28] – [Typical Vulnerability Examples] vladpolskiywiki:devel:security [2025/01/03 17:48] (текущий) – [Reporting Security Issues] vladpolskiy
Строка 164: Строка 164:
 </code> </code>
  
-===== Cross Site Request Forgery (CSRF) =====+===== Подделка межсайтовых запросов (CSRF) =====
  
-This vulnerability often appears into plugins due to the lack of understanding of this issueoften confused with the XSS.+Эта уязвимость часто появляется в плагинах из-за отсутствия понимания этой проблемыее часто путают с XSS.
  
-Cross Site Request Forgery refers to an attack where the victim's browser is tricked by a malicious site to ask for a page on a vulnerable site to do an unwanted actionThe attack assumes the victim's browser has credentials to change something on the vulnerable site.+Подделка межсайтовых запросов относится к атаке, при которой вредоносный сайт обманывает браузер жертвы, запрашивая страницу на уязвимом сайте для выполнения нежелательного действияАтака предполагает, что браузер жертвы имеет учетные данные для изменения чего-либо на уязвимом сайте.
  
-===Adding security token===+===Добавление токена безопасности===
  
-DokuWiki offers functions to help you deal against CSRF attacks. [[xref>getSecurityToken()]] will create a token that should be used to protect any authenticated actionIt has to be included in links or forms triggering that actionAll forms created with the [[form|form library]] will have security tokens added automaticallyfor handcrafted forms the [[xref>formSecurityToken()]] function can be used.+DokuWiki предлагает функции, которые помогут вам бороться с атаками CSRF. [[https://codesearch.dokuwiki.org/xref/dokuwiki/inc/common.php?r=&mo=3231&fi=116#116|getSecurityToken()]] создаст токен, который следует использовать для защиты любого аутентифицированного действияОн должен быть включен в ссылки или формы, запускающие это действиеВсе формы, созданные с помощью [[wiki:devel:form|библиотеки форм]] будут иметь автоматически добавленные токены безопасностидля форм, созданных вручную, можно использовать функцию [[https://codesearch.dokuwiki.org/xref/dokuwiki/inc/common.php?r=&mo=4438&fi=157#157|formSecurityToken()]].
  
  
-It is your resposibility as the plugin author to actually check the token before executing authorized actions using the [[xref>checkSecurityToken()]] function.+Вы как автор плагина несете ответственность за фактическую проверку токена перед выполнением авторизованных действий с использованием функции [[https://codesearch.dokuwiki.org/xref/dokuwiki/inc/common.php?r=&mo=3783&fi=133#133|checkSecurityToken()]].
  
 ==See also== ==See also==
  
-  * [[wp>Cross Site Request Forgery]] +  * [[wp>Cross Site Request Forgery|Подделка межсайтовых запросов]] 
-  * [[https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29|OWASP explanation]]+  * [[https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29|Объяснение OWASP]]
  
-==== Typical Vulnerability Example ====+==== Типичный пример уязвимости ====
  
-Below is the simplest example to startYou may have a more complicated plugin of your own to securehere is just a simple example based on form.+Ниже приведен простейший пример для началаУ вас может быть более сложный плагин для защитывот простой пример на основе формы.
  
-Imagine you want to know something which can be answered to Yes or Noyou would have a form of this type:+Представьтечто вы хотите узнать что-то, на что можно ответить «Да» или «Нет», у вас получится форма такого типа:
  
 <code html> <code html>
Строка 196: Строка 196:
 </code> </code>
  
-Then you process this form as follows:+Затем вы обрабатываете эту форму следующим образом:
  
 <code php> <code php>
Строка 206: Строка 206:
 </code> </code>
  
-So a user is connected to answer this questionbut he doesn't know the response yetLet's take time to think and browse the web... +Итакпользователь подключен, чтобы ответить на этот вопрос, но он пока не знает ответаДавайте уделим время размышлениям и просмотрим веб-страницы… Теперь пользователь посещает вредоносный веб-сайткоторый знает или нетчто пользователь может быть подключен к вашему DokuWiki. На этом веб-сайте разработчик включил этот HTML- тег изображения:
-Now the user is visiting a malicious websiteone which knowor not, that the user may be connected to your DokuWiki. In this website, the developer included this HTML image tag:+
  
 <code html> <code html>
Строка 213: Строка 212:
 </code> </code>
  
-What will the user's browser do then?+Что тогда будет делать браузер пользователя?
  
-The browser will process this image as any other and will send a request to this URL. Your plugin will then see that ''$_GET['yn']'' is set and will call the ''do_something_with_yn()'' function.+Браузер обработает это изображение как любое другое и отправит запрос на этот URL . Ваш плагин увидит, что ''$_GET['yn']'' установлено, и вызовет ''do_something_with_yn()'' функцию.
  
-That's one of the examples of CSRF. Nowhow to fix this security hole?+Это один из примеров CSRF. Теперькак исправить эту дыру в безопасности?
  
-==== Prevent CSRF ====+==== Предотвращение CSRF-атак ====
  
-Remember your form aboveLet's add an input in it:+Помните вашу форму вышеДавайте добавим в нее ввод:
  
 <code html> <code html>
Строка 232: Строка 231:
 </code> </code>
  
-Do you see the first inputYesGoodNow you have to check the security token when you receive the formbefore processing it:+Видите первый вводДаХорошоТеперь вам нужно проверить токен безопасности при получении формыперед ее обработкой:
  
 <code php> <code php>
Строка 242: Строка 241:
 </code> </code>
  
-As the malicious website will never find the value of the "sectok" hidden inputyour form is no longer vulnerable to CSRF.+Поскольку вредоносный веб-сайт никогда не найдет значение скрытого ввода «sectok»ваша форма больше не уязвима для CSRF.
  
-**Note:** If the security token is not validthe ''checkSecurityToken()'' function displays a message which informs the user.+**Примечание**: Если токен безопасности недействителен, ''checkSecurityToken()'' функция отображает сообщение, информирующее пользователя.
  
  
  
-===== Remote Code Inclusion =====+===== Удаленное включение кода =====
  
-This attack allows an attacker to inject (PHP) code into your applicationThis may occur on including filesor using unsafe operations functions like [[phpfn>eval()]] or [[phpfn>system()]].+Эта атака позволяет злоумышленнику внедрить код (PHP) в ваше приложениеЭто может произойти при включении файлов или использовании небезопасных функций операцийтаких как [[phpfn>eval()]] или [[phpfn>system()]].
  
-**Always filter any input** that will be used to load files or that is passed as an argument to external commands.+**Всегда фильтруйте любые входные данные**, которые будут использоваться для загрузки файлов или которые передаются в качестве аргумента внешним командам.
  
-===== Information leaks =====+===== Утечка информации =====
  
-This attack may lead to the exposure of files that should usually be protected by DokuWiki'ACL or it might expose files on the server (like ''/etc/passwd'').+Эта атака может привести к раскрытию файлов, которые обычно должны быть защищены ACL DokuWiki , или может раскрыть файлы на сервере (например, ''/etc/passwd'').
  
-**Always filter any input** that will be used to load files or that is passed as an argument to external commands.+**Всегда фильтруйте любые входные данные,** которые будут использоваться для загрузки файлов или которые передаются в качестве аргумента внешним командам.
  
-**Always use DokuWiki'ACL check functions when accessing page data**.+**Всегда используйте функции проверки ACL DokuWiki при доступе к данным страницы.**
  
-===== SQL injection =====+===== SQL-инъекция =====
  
-This attack is rarely relevant in DokuWiki because no database is usedHowever if your plugin accesses a database always escape all values before using them in SQL statements.+Эта атака редко актуальна в DokuWiki, поскольку база данных не используетсяОднако, если ваш плагин обращается к базе данных, всегда экранируйте все значения перед их использованием в операторах SQL.
  
-More info:+Дополнительная информация:
  
-  * [[wp>SQL injection]]+  * [[wp>SQL injection|SQL-инъекция]]
  
  
-===== Reporting Security Issues =====+===== Сообщение о проблемах безопасности =====
  
-If you encounter an issue with a plugin please inform the author of the plugin via emailoptionally putting [[andi@splitbrain.org|Andi]] or the [[:mailinglist]] on CC.+Если у вас возникли проблемы с плагиномсообщите об этом автору плагина по электронной почте, при желании указав [[andi@splitbrain.org|Andi]] or the [[wiki:mailinglist|список рассылки]] on CC.
  
-Additionally a ''securityissue'' field with a short description of the problem should be added to the [[plugin:repository|data]] on the page of the pluginThis will create a red warning box and will delist the plugin from the main plugin list.+Дополнительно к [[wiki:lugin:repository|данным]] на странице плагина ''securityissue'' следует добавить поле с кратким описанием проблемы Это создаст красное предупреждающее поле и исключит плагин из основного списка плагинов.
  
-Once the issue was fixed and a new release was made, this field should be removed again.+После устранения проблемы и выпуска новой версии это поле следует снова удалить.
wiki/devel/security.1735914485.txt.gz · Последнее изменение: vladpolskiy