Giter Site home page Giter Site logo

asn's Introduction

ASN

Desarrollo

Para levantar el servidor ejecuta docker-compose up -d, se levantará el servicio en la url localhost

Inicio

Se ha configurado el despligue de forma que no sea necesario instalar nada y ya tenga todas las dependecias necesarias.


A continuación, al desplegar la web podemos ver las 3 secciones, pero antes de ello debemos realizar la migración de la base de datos.

Para ello debemos introducirnos en la consola de la instancia desde docker y realizar la migración con el siguiente comando.

cd asn
php spark migrate

Migrate

Podemos observar que se han creado dos tablas, una con los usuarios y otra con las migraciones que realizamos con php y codeigniter 4.

Database

➜  project-root/asn/app git:(main) ✗ tree Models
Models
├── Example_1Model.php
├── Example_2Model.php
├── Example_3Model.php
└── UserModel.php

0 directories, 4 files
➜  project-root/asn/app git:(main) ✗ tree Views
Views
├── Auth
├── errors
│   ├── cli
│   └── html
├── index.php
├── modals
├── pages
│   ├── example1_insecure.php
│   ├── example1_secure.php
│   ├── example2_insecure.php
│   ├── example2_secure.php
│   ├── example3_insecure.php
│   ├── example3_secure.php
│   └── index.php
├── template
│   ├── debug.php
│   ├── footer.php
│   ├── header.php
│   ├── layout.php
│   └── notifications.php
└── welcome_message.php

7 directories, 22 files
➜  project-root/asn/app git:(main) ✗ tree Controllers
Controllers
├── BaseController.php
├── Example_1.php
├── Example_2.php
├── Example_3.php
└── Home.php

0 directories, 5 files

Estos son ejemplos de control, validación y protección muy básicos, para proteger una aplicación real deberiamos usar muchos más métodos y medidas de control con reglas más complejas y completas, pero para este ejemplo es más que suficiente como una prueba de concepto para proteger una aplicación frente ataques.


Ejemplo 1

Para el ejemplo 1 inseguro se nos exige que el titulo y el mensaje a introducir debe tener una longitud de 5 y 10 caracteres correspondientemente.

Hemos usado los métodos que nos propociona codeigniter, puede revisar el código en App/Controllers/Example_1.

Ejemplo 1 inseguro

Código 1 inseguro

Ejemplo 1 seguro

Código 1 seguro


Ejemplo 2

Para el ejemplo 2 inseguro hemos hecho una inyección sql muy simple, en el campo de 'mensaje' hemos introducido el siguinte script de javascript

En el ejemplo seguro hemos usado los métodos que nos propociona codeigniter, mientras que en el ejemplo 2 hemos usado una conexión propia con la base de datos usando las variables de entorno y realizando consultas e inserciones sin sanear los datos de los formularios, puede revisar el código en 'App/Controllers/Example_2'

<script>console.log("hack")</script>

Ejemplo 2 inseguro

Código 2 inseguro

Ejemplo 2 seguro

Código 2 seguro


Ejemplo 3

Para desactivar el CSRF Protection en el ejemplo 3 debemos ir a App/Config/Filters y añadimos la siguiente excepción, aunque esto solo desactiva la protección y no es lo que queremos demostrar.

<?php

namespace Config;

use CodeIgniter\Config\BaseConfig;

class Filters extends BaseConfig
{
    public $globals = [
        'before' => [
            'csrf' => ['except' => ['Example_3/insecure']],
        ],
    ];
 
    // ...
}

Lo que debemos hacer es no usar la protección csrf, ya que los formularios que proporciona CodeIgniter 4 incluyen un campo oculto que envia el token de protección.

Protección desactivada

Protección activada

El mensaje de error nos informa mediante un flash de CodeIgniter 4

Ejemplo flash

Ejemplo inseguro con la protección csrf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.