Skip to content

Commit

Permalink
forms: info about hidden field security
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed Apr 26, 2024
1 parent 44bafab commit f19e787
Show file tree
Hide file tree
Showing 16 changed files with 143 additions and 79 deletions.
14 changes: 9 additions & 5 deletions forms/bg/controls.texy
Expand Up @@ -343,6 +343,8 @@ $form->addHidden('userid');

Използвайте `setNullable()`, за да го модифицирате така, че да връща `null` вместо празен низ. Функцията [addFilter() |validation#Modifying-Input-Values] ви позволява да промените представената стойност.

Въпреки че елементът е скрит, важно е да осъзнаете**, че стойността му все още може да бъде променена или подправена от нападател. Винаги проверявайте и валидирайте обстойно всички получени стойности от страна на сървъра, за да предотвратите рисковете за сигурността, свързани с манипулиране на данни.


addSubmit(string|int $name, $caption=null): SubmitButton .[method]
==================================================================
Expand Down Expand Up @@ -463,7 +465,7 @@ $sub2->addEmail('email', 'Имейл:');


пропуснати стойности .[#toc-omitted-values]
-------------------------------------------
===========================================

Ако не се интересувате от стойността, въведена от потребителя, можем да използваме `setOmitted()`, за да я пропуснем в резултата, предоставен от метода `$form->getValues()` или предаден на обработващите програми. Това е подходящо за различни пароли за валидиране, полета за защита от спам и др.

Expand All @@ -476,25 +478,27 @@ $form->addPassword('passwordVerify', 'Повторите пароль:')


Деактивиране на входните елементи .[#toc-disabling-inputs]
----------------------------------------------------------
==========================================================

За да деактивирате въвеждането, можете да се обадите на `setDisabled()`. Такова поле не може да се редактира от потребителя.
Входовете могат да бъдат деактивирани с помощта на `setDisabled()`. Деактивиран вход не може да се редактира от потребителя.

```php
$form->addText('username', 'Имя пользователя:')
->setDisabled();
```

Деактивираните полета изобщо не се изпращат от браузъра към сървъра, така че няма да ги намерите в данните, върнати от функцията `$form->getValues()`. Въпреки това, ако зададете `setOmitted(false)`, Nette ще включи тяхната стойност в тези данни.
Деактивираните входове не се изпращат към сървъра от браузъра, така че няма да ги намерите в данните, върнати от функцията `$form->getValues()`. Ако обаче зададете `setOmitted(false)`, Nette ще включи стойността им по подразбиране в тези данни.

Когато извикате `setDisabled()`, стойността на полето се изтрива. Ако задавате стойност по подразбиране, трябва да го направите, след като я деактивирате:
Когато се извика `setDisabled()`, **стойността на входа се изтрива** от съображения за сигурност. Ако задавате стойност по подразбиране, е необходимо да го направите след нейното деактивиране:

```php
$form->addText('username', 'Имя пользователя:')
->setDisabled()
->setDefaultValue($userName);
```

Алтернатива на забранените входове са полетата с атрибут HTML `readonly`, които се изпращат на сървъра от браузъра. Въпреки че полето е само за четене, **важно е да се разбере**, че стойността му все пак може да бъде променена или подправена от нападател.


Потребителски контроли .[#toc-custom-controls]
==============================================
Expand Down
12 changes: 8 additions & 4 deletions forms/cs/controls.texy
Expand Up @@ -343,6 +343,8 @@ $form->addHidden('userid');

Pomocí `setNullable()` lze nastavit, aby vracel `null` místo prázdného řetězce. Pozměnit odeslanou hodnotu umožňuje [addFilter()|validation#Úprava vstupu].

Ačkoli je prvek skrytý, je **důležité si uvědomit**, že hodnota může být stále modifikována nebo podvržena útočníkem. Vždy důkladně ověřujte a validujte všechny přijaté hodnoty na serverové straně, aby se předešlo bezpečnostním rizikům spojeným s manipulací dat.


addSubmit(string|int $name, $caption=null): SubmitButton .[method]
==================================================================
Expand Down Expand Up @@ -463,7 +465,7 @@ U prvků `addText()`, `addPassword()`, `addTextArea()`, `addEmail()`, `addIntege


Vynechání hodnoty
-----------------
=================

Pokud nás uživatelem vyplněná hodnota nezajímá, můžeme ji pomocí `setOmitted()` vynechat z výsledku metody `$form->getValues()` nebo z dat předávaných do handlerů. To se hodí pro různá hesla pro kontrolu, antispamové prvky atd.

Expand All @@ -476,7 +478,7 @@ $form->addPassword('passwordVerify', 'Heslo pro kontrolu:')


Deaktivace prvků
----------------
================

Prvky lze deaktivovat pomocí `setDisabled()`. Takový prvek nemůže uživatel editovat.

Expand All @@ -485,16 +487,18 @@ $form->addText('username', 'Uživatelské jméno:')
->setDisabled();
```

Disablované prvky prohlížeč vůbec neodesílá na server, tedy je ani nenajdete v datech vrácených funkcí `$form->getValues()`. Pokud však nastavíte `setOmitted(false)`, Nette jejich hodnotu do těchto dat zahrne.
Disablované prvky prohlížeč vůbec neodesílá na server, tedy je ani nenajdete v datech vrácených funkcí `$form->getValues()`. Pokud však nastavíte `setOmitted(false)`, Nette do těchto dat zahrne jejich výchozí hodnotu.

Při volání `setDisabled()` se **smaže hodnota prvku**. Pokud nastavujete výchozí hodnotu, je tak nutné učinit až po jeho deaktivaci:
Při volání `setDisabled()` se z bezpečnostních důvodů **smaže hodnota prvku**. Pokud nastavujete výchozí hodnotu, je tak nutné učinit až po jeho deaktivaci:

```php
$form->addText('username', 'Uživatelské jméno:')
->setDisabled()
->setDefaultValue($userName);
```

Alternativou disablovaných prvků jsou prvky s HTML atributem `readonly`, které prohlížeč na server posílá. Ačkoliv je prvek pouze pro čtení, je **důležité si uvědomit**, že jeho hodnota může být stále modifikována nebo podvržena útočníkem.


Vlastní prvky
=============
Expand Down
14 changes: 9 additions & 5 deletions forms/de/controls.texy
Expand Up @@ -343,6 +343,8 @@ $form->addHidden('userid');

Verwenden Sie `setNullable()`, um die Rückgabe von `null` anstelle eines leeren Strings zu ändern. Mit [addFilter() |validation#Modifying Input Values] können Sie den übergebenen Wert ändern.

Obwohl das Element verborgen ist, ist es **wichtig zu wissen**, dass sein Wert immer noch von einem Angreifer geändert oder gefälscht werden kann. Überprüfen und validieren Sie immer alle empfangenen Werte auf der Serverseite gründlich, um Sicherheitsrisiken im Zusammenhang mit Datenmanipulationen zu vermeiden.


addSubmit(string|int $name, $caption=null): SubmitButton .[method]
==================================================================
Expand Down Expand Up @@ -463,7 +465,7 @@ Die folgenden Methoden können für die Elemente `addText()`, `addPassword()`, `


Ausgelassene Werte .[#toc-omitted-values]
-----------------------------------------
=========================================

Wenn Sie an dem vom Benutzer eingegebenen Wert nicht interessiert sind, können wir `setOmitted()` verwenden, um ihn aus dem Ergebnis auszulassen, das von der Methode `$form->getValues​()` geliefert oder an Handler übergeben wird. Dies eignet sich für verschiedene Passwörter zur Überprüfung, Antispam-Felder usw.

Expand All @@ -476,25 +478,27 @@ $form->addPassword('passwordVerify', 'Password again:')


Deaktivieren von Eingaben .[#toc-disabling-inputs]
--------------------------------------------------
==================================================

Um eine Eingabe zu deaktivieren, können Sie `setDisabled()` aufrufen. Ein solches Feld kann vom Benutzer nicht bearbeitet werden.
Eingänge können mit `setDisabled()` deaktiviert werden. Ein deaktivierter Eingang kann vom Benutzer nicht bearbeitet werden.

```php
$form->addText('username', 'User name:')
->setDisabled();
```

Deaktivierte Felder werden vom Browser nicht an den Server gesendet, so dass sie nicht in den von der Funktion `$form->getValues()` zurückgegebenen Daten zu finden sind. Wenn Sie jedoch `setOmitted(false)` einstellen, wird Nette ihren Wert in diese Daten aufnehmen.
Deaktivierte Eingaben werden vom Browser nicht an den Server gesendet, so dass sie in den von der Funktion `$form->getValues()` zurückgegebenen Daten nicht zu finden sind. Wenn Sie jedoch `setOmitted(false)` einstellen, wird Nette den Standardwert in diese Daten aufnehmen.

Wenn Sie `setDisabled()` aufrufen, wird der Wert des Feldes gelöscht. Wenn Sie einen Standardwert setzen, müssen Sie dies nach der Deaktivierung tun:
Wenn `setDisabled()` aufgerufen wird, wird **der Wert der Eingabe aus Sicherheitsgründen gelöscht**. Wenn Sie einen Standardwert setzen, müssen Sie dies nach seiner Deaktivierung tun:

```php
$form->addText('username', 'User name:')
->setDisabled()
->setDefaultValue($userName);
```

Eine Alternative zu deaktivierten Eingaben sind Felder mit dem HTML-Attribut `readonly`, die vom Browser an den Server gesendet werden. Obwohl das Feld nur lesbar ist, ist es **wichtig zu wissen**, dass sein Wert trotzdem von einem Angreifer geändert oder gefälscht werden kann.


Benutzerdefinierte Steuerelemente .[#toc-custom-controls]
=========================================================
Expand Down
14 changes: 9 additions & 5 deletions forms/el/controls.texy
Expand Up @@ -343,6 +343,8 @@ $form->addHidden('userid');

Χρησιμοποιήστε το `setNullable()` για να το αλλάξετε ώστε να επιστρέφει `null` αντί για κενό αλφαριθμητικό. Η [addFilter() |validation#Modifying Input Values] σας επιτρέπει να αλλάξετε την υποβαλλόμενη τιμή.

Παρόλο που το στοιχείο είναι κρυφό, είναι **σημαντικό να συνειδητοποιήσετε** ότι η τιμή του μπορεί να τροποποιηθεί ή να παραποιηθεί από έναν επιτιθέμενο. Πάντα να επαληθεύετε και να επικυρώνετε διεξοδικά όλες τις λαμβανόμενες τιμές στην πλευρά του διακομιστή για να αποφύγετε τους κινδύνους ασφαλείας που σχετίζονται με τη χειραγώγηση των δεδομένων.


addSubmit(string|int $name, $caption=null): SubmitButton .[method]
==================================================================
Expand Down Expand Up @@ -463,7 +465,7 @@ $sub2->addEmail('email', 'Email:');


Παραλειφθείσες τιμές .[#toc-omitted-values]
-------------------------------------------
===========================================

Αν δεν σας ενδιαφέρει η τιμή που εισάγει ο χρήστης, μπορούμε να χρησιμοποιήσουμε το `setOmitted()` για να την παραλείψουμε από το αποτέλεσμα που παρέχεται από τη μέθοδο `$form->getValues​()` ή που περνάει στους χειριστές. Αυτό είναι κατάλληλο για διάφορους κωδικούς πρόσβασης για επαλήθευση, πεδία antispam κ.λπ.

Expand All @@ -476,25 +478,27 @@ $form->addPassword('passwordVerify', 'Password again:')


Απενεργοποίηση εισόδων .[#toc-disabling-inputs]
-----------------------------------------------
===============================================

Για να απενεργοποιήσετε μια είσοδο, μπορείτε να καλέσετε το `setDisabled()`. Ένα τέτοιο πεδίο δεν μπορεί να επεξεργαστεί από τον χρήστη.
Οι είσοδοι μπορούν να απενεργοποιηθούν χρησιμοποιώντας το `setDisabled()`. Ο χρήστης δεν μπορεί να επεξεργαστεί μια απενεργοποιημένη είσοδο.

```php
$form->addText('username', 'User name:')
->setDisabled();
```

Τα απενεργοποιημένα πεδία δεν αποστέλλονται καθόλου από το πρόγραμμα περιήγησης στον διακομιστή, οπότε δεν θα τα βρείτε στα δεδομένα που επιστρέφονται από τη λειτουργία `$form->getValues()`. Ωστόσο, αν ορίσετε το `setOmitted(false)`, η Nette θα συμπεριλάβει την τιμή τους σε αυτά τα δεδομένα.
Οι απενεργοποιημένες είσοδοι δεν αποστέλλονται στον διακομιστή από το πρόγραμμα περιήγησης, επομένως δεν θα τις βρείτε στα δεδομένα που επιστρέφονται από τη λειτουργία `$form->getValues()`. Ωστόσο, αν ορίσετε το `setOmitted(false)`, η Nette θα συμπεριλάβει την προεπιλεγμένη τιμή τους σε αυτά τα δεδομένα.

Όταν καλέσετε τη λειτουργία `setDisabled()`, η τιμή του πεδίου διαγράφεται. Εάν ορίζετε μια προεπιλεγμένη τιμή, πρέπει να το κάνετε αφού την απενεργοποιήσετε:
Όταν καλείται η `setDisabled()`, **η τιμή της εισόδου διαγράφεται** για λόγους ασφαλείας. Εάν ορίζετε μια προεπιλεγμένη τιμή, είναι απαραίτητο να το κάνετε μετά την απενεργοποίησή της:

```php
$form->addText('username', 'User name:')
->setDisabled()
->setDefaultValue($userName);
```

Μια εναλλακτική λύση για τις απενεργοποιημένες εισόδους είναι τα πεδία με το χαρακτηριστικό HTML `readonly`, τα οποία αποστέλλονται στον διακομιστή από το πρόγραμμα περιήγησης. Αν και το πεδίο είναι μόνο αναγνώσιμο, είναι **σημαντικό να συνειδητοποιήσετε** ότι η τιμή του μπορεί να τροποποιηθεί ή να παραποιηθεί από έναν εισβολέα.


Προσαρμοσμένα στοιχεία ελέγχου .[#toc-custom-controls]
======================================================
Expand Down
14 changes: 9 additions & 5 deletions forms/en/controls.texy
Expand Up @@ -343,6 +343,8 @@ $form->addHidden('userid');

Use `setNullable()` to change it to return `null` instead of an empty string. The [addFilter()|validation#Modifying Input Values] allows you to change the submitted value.

Although the element is hidden, it is **important to realize** that its value can still be modified or spoofed by an attacker. Always thoroughly verify and validate all received values on the server side to prevent security risks associated with data manipulation.


addSubmit(string|int $name, $caption=null): SubmitButton .[method]
==================================================================
Expand Down Expand Up @@ -463,7 +465,7 @@ The following methods can be called for the `addText()`, `addPassword()`, `addTe


Omitted Values
--------------
==============

If you are not interested in the value entered by the user, we can use `setOmitted()` to omit it from the result provided by the `$form->getValues​()` method or passed to handlers. This is suitable for various passwords for verification, antispam fields, etc.

Expand All @@ -476,25 +478,27 @@ $form->addPassword('passwordVerify', 'Password again:')


Disabling Inputs
----------------
================

In order to disable an input, you can call `setDisabled()`. Such a field cannot be edited by the user.
Inputs can be disabled using `setDisabled()`. A disabled input cannot be edited by the user.

```php
$form->addText('username', 'User name:')
->setDisabled();
```

Disabled fields are not sent by the browser to the server at all, so you will not find them in the data returned by the `$form->getValues()` function. However, if you set `setOmitted(false)`, Nette will include their value in this data.
Disabled inputs are not sent to the server by the browser, so you won't find them in the data returned by the `$form->getValues()` function. However, if you set `setOmitted(false)`, Nette will include their default value in this data.

When you call `setDisabled()`, the **value of the field is deleted**. If you are setting a default value, you must do so after deactivating it:
When `setDisabled()` is called, **the input's value is erased** for security reasons. If you are setting a default value, it is necessary to do so after its deactivation:

```php
$form->addText('username', 'User name:')
->setDisabled()
->setDefaultValue($userName);
```

An alternative to disabled inputs are fields with the HTML `readonly` attribute, which are sent to the server by the browser. Although the field is only readable, it is **important to realize** that its value can still be modified or spoofed by an attacker.


Custom Controls
===============
Expand Down

0 comments on commit f19e787

Please sign in to comment.