Skip to content

Commit

Permalink
fix some spanish page
Browse files Browse the repository at this point in the history
  • Loading branch information
bjohansebas committed Nov 30, 2024
1 parent ffc191c commit 87d244c
Show file tree
Hide file tree
Showing 7 changed files with 290 additions and 341 deletions.
24 changes: 8 additions & 16 deletions es/advanced/best-practice-performance.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,23 +197,19 @@ En el desarrollo, normalmente establece las variables de entorno en el shell int

Con Upstart, utilice la palabra clave `env` en el archivo de trabajo. Por ejemplo:

<pre>
<code class="language-sh" translate="no">
```sh
# /etc/init/env.conf
env NODE_ENV=production
</code>
</pre>
```

Para obtener más información, consulte [Upstart Intro, Cookbook and Best Practices](http://upstart.ubuntu.com/cookbook/#environment-variables).

Con systemd, utilice la directiva `Environment` en el archivo unit. Por ejemplo:

<pre>
<code class="language-sh" translate="no">
```sh
# /etc/systemd/system/myservice.service
Environment=NODE_ENV=production
</code>
</pre>
```

Para obtener más información, consulte [Using Environment Variables In systemd Units](https://coreos.com/os/docs/latest/using-environment-variables-in-systemd-units.html).

Expand Down Expand Up @@ -274,8 +270,7 @@ Systemd es un administrador de servicios y sistemas Linux. La mayoría de las pr

Un archivo de configuración de servicio de systemd se denomina un _archivo unit_, con un nombre de archivo terminado en .service. A continuación, se muestra un archivo unit de ejemplo para gestionar directamente una aplicación Node (sustituya el texto en negrita por los valores de su sistema y su aplicación):

<pre>
<code class="language-sh" translate="no">
```sh
[Unit]
Description=Awesome Express App

Expand Down Expand Up @@ -303,8 +298,7 @@ Restart=always

[Install]
WantedBy=multi-user.target
</code>
</pre>
```

Para obtener más información sobre systemd, consulte [systemd reference (man page)](http://www.freedesktop.org/software/systemd/man/systemd.unit.html).

Expand Down Expand Up @@ -334,8 +328,7 @@ Un servicio de Upstart se define en un archivo de configuración de trabajo (tam

Cree un archivo denominado `myapp.conf` en `/etc/init/` con el siguiente contenido (sustituya el texto en negrita por los valores de su sistema y su aplicación):

<pre>
<code class="language-sh" translate="no">
```sh
# When to start the process
start on runlevel [2345]

Expand Down Expand Up @@ -363,8 +356,7 @@ respawn

# Limit restart attempt to 10 times within 10 seconds
respawn limit 10 10
</code>
</pre>
```

NOTA: este script requiere Upstart 1.4 o posterior, soportado en Ubuntu 12.04-14.10.

Expand Down
71 changes: 32 additions & 39 deletions es/advanced/best-practice-security.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,26 +66,24 @@ $ npm install --save helmet

A continuación, utilícelo en el código:

<pre>
<code class="language-javascript" translate="no">
...
var helmet = require('helmet');
app.use(helmet());
...
</code>
</pre>
```js
// ...

const helmet = require('helmet')
app.use(helmet())

// ...
```

### Como mínimo, inhabilitar la cabecera X-Powered-By

Si no desea utilizar Helmet, como mínimo, inhabilite la cabecera `X-Powered-By`. Los atacantes pueden utilizar esta cabecera (que está habilitada de forma predeterminada) para detectar las aplicaciones que ejecutan Express e iniciar ataques con destinos específicos.

Por lo tanto, se recomienda desactivar la cabecera con el método `app.disable()`:

<pre>
<code class="language-javascript" translate="no">
app.disable('x-powered-by');
</code>
</pre>
```js
app.disable('x-powered-by')
```

Si utiliza `helmet.js`, lo hace automáticamente.

Expand All @@ -108,17 +106,14 @@ Si utiliza el nombre de cookie de sesión predeterminado, la aplicación puede q

Para evitar este problema, utilice nombres de cookie genéricos, por ejemplo, con el middleware [express-session](https://www.npmjs.com/package/express-session):

<pre>
<code class="language-javascript" translate="no">
var session = require('express-session');
```js
const session = require('express-session')
app.set('trust proxy', 1) // trust first proxy
app.use( session({
secret : 's3Cur3',
name : 'sessionId',
})
);
</code>
</pre>
app.use(session({
secret: 's3Cur3',
name: 'sessionId'
}))
```

### Establecer las opciones de seguridad de las cookies

Expand All @@ -132,26 +127,24 @@ Establezca las siguientes opciones de cookies para mejorar la seguridad:

A continuación, se muestra un ejemplo de uso del middleware [cookie-session](https://www.npmjs.com/package/cookie-session):

<pre>
<code class="language-javascript" translate="no">
var session = require('cookie-session');
var express = require('express');
var app = express();
```js
const session = require('cookie-session')
const express = require('express')
const app = express()

var expiryDate = new Date( Date.now() + 60 * 60 * 1000 ); // 1 hour
const expiryDate = new Date(Date.now() + 60 * 60 * 1000) // 1 hour
app.use(session({
name: 'session',
keys: ['key1', 'key2'],
cookie: { secure: true,
httpOnly: true,
domain: 'example.com',
path: 'foo/bar',
expires: expiryDate
}
})
);
</code>
</pre>
cookie: {
secure: true,
httpOnly: true,
domain: 'example.com',
path: 'foo/bar',
expires: expiryDate
}
}))
```

## Prevenir ataques de fuerza bruta a la autenticación

Expand Down
48 changes: 22 additions & 26 deletions es/advanced/developing-template-engines.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,38 +13,34 @@ Utilice el método `app.engine(ext, callback)` para crear su propio motor de pla

El siguiente código es un ejemplo de implementación de un motor de plantilla muy simple para la representación de archivos `.ntl`.

<pre>
<code class="language-javascript" translate="no">
var fs = require('fs'); // this engine requires the fs module
app.engine('ntl', function (filePath, options, callback) { // define the template engine
fs.readFile(filePath, function (err, content) {
if (err) return callback(new Error(err));
```js
const fs = require('fs') // this engine requires the fs module
app.engine('ntl', (filePath, options, callback) => { // define the template engine
fs.readFile(filePath, (err, content) => {
if (err) return callback(err)
// this is an extremely simple template engine
var rendered = content.toString().replace('#title#', '<title>'+ options.title +'</title>')
.replace('#message#', '<h1>'+ options.message +'</h1>');
return callback(null, rendered);
});
});
app.set('views', './views'); // specify the views directory
app.set('view engine', 'ntl'); // register the template engine
</code>
</pre>
const rendered = content.toString()
.replace('#title#', `<title>${options.title}</title>`)
.replace('#message#', `<h1>${options.message}</h1>`)
return callback(null, rendered)
})
})
app.set('views', './views') // specify the views directory
app.set('view engine', 'ntl') // register the template engine
```

La aplicación ahora podrá representar archivos `.ntl`. Cree un archivo denominado `index.ntl` en el directorio `views` con el siguiente contenido.

<pre>
<code class="language-javascript" translate="no">
```text
#title#
#message#
</code>
</pre>
```

A continuación, cree la ruta siguiente en la aplicación.

<pre>
<code class="language-javascript" translate="no">
app.get('/', function (req, res) {
res.render('index', { title: 'Hey', message: 'Hello there!'});
});
</code>
</pre>
```js
app.get('/', (req, res) => {
res.render('index', { title: 'Hey', message: 'Hello there!' })
})
```
Cuando realice una solicitud a la página de inicio, `index.ntl` se representará como HTML.
21 changes: 11 additions & 10 deletions es/guide/behind-proxies.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ Una dirección IP, una subred o una matriz de direcciones IP y subredes de confi

Puede establecer direcciones IP de varias formas:

<pre>
<code class="language-js" translate="no">app.set('trust proxy', 'loopback') // specify a single subnet
```js
app.set('trust proxy', 'loopback') // specify a single subnet
app.set('trust proxy', 'loopback, 123.123.123.123') // specify a subnet and an address
app.set('trust proxy', 'loopback, linklocal, uniquelocal') // specify multiple subnets as CSV
app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']) // specify multiple subnets as an array</code>
</pre>
app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']) // specify multiple subnets as an array
```

Cuando se especifican, las direcciones IP o las subredes se excluyen del proceso de determinación de direcciones, y la dirección IP no de confianza más próxima al servidor de aplicaciones se establece como la dirección IP del cliente.
</td>
Expand All @@ -57,12 +57,13 @@ Confíe en la porción `n` entre el origen y el destino del servidor proxy acces
<td>Función</td>
<td markdown="1">
Implementación de confianza personalizada. Utilícela sólo si sabe lo que está haciendo.
<pre>
<code class="language-js" translate="no">app.set('trust proxy', function (ip) {
if (ip === '127.0.0.1' || ip === '123.123.123.123') return true; // trusted IPs
else return false;
});</code>
</pre>

```js
app.set('trust proxy', (ip) => {
if (ip === '127.0.0.1' || ip === '123.123.123.123') return true // trusted IPs
else return false
})
```
</td>
</tr>
</tbody>
Expand Down
Loading

0 comments on commit 87d244c

Please sign in to comment.