Seguridad en imagenes php
Publicado por Gonzalo (27 intervenciones) el 02/04/2020 01:36:39
Hola, la verdad que no estoy muy ducho con el tema, y vengo trabajando con un codigo hace ya muchos anos, pero la verdad que estoy teniendo muchos problemas de vulnerabilidad, me estan cada 2 dias ingreando y hackeando el sitio. por lo general encuentro los archivos hack dentro de la carpeta /imgprod que es justamente donde yo subo los archivos de imagenes y pdf de un listado de producto que administro.
voy a tratar de dejar el codigo lo mas sencillo posible, dado que luego repite mucho, pero lo ideal seria que alguien me ayude agregar seguridad sobre lo actual que tengo.
como veran mi gran problema es que hago una subida de archivo... pero este no tiene ningun tipo de seguridad, me podrian ayudar un poco en este principio de codigo para hacerlo mas seguro?
dejo abajo tambien la linea de html del form que contiene el
Código:
y el simple campo input file esta de la siguiente forma
Código HTML:
voy a tratar de dejar el codigo lo mas sencillo posible, dado que luego repite mucho, pero lo ideal seria que alguien me ayude agregar seguridad sobre lo actual que tengo.
como veran mi gran problema es que hago una subida de archivo... pero este no tiene ningun tipo de seguridad, me podrian ayudar un poco en este principio de codigo para hacerlo mas seguro?
dejo abajo tambien la linea de html del form que contiene el
Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
if ($HttpVars->TraerPost('envio') != '') {
$pathabs1 = "";
$pathabs2 = "";
$nombre = $HttpVars->TraerPost('nombre');
$sql="SELECT nombre from tbl_productos where nombre = '" . $nombre . "'";
$result = mysqli_query( $conexion, $sql );
if($result->num_rows > 0) {
$existe = 1;
}else{
$archivo1=$_FILES['imgch']['tmp_name'];
$nomarchivo1=$_FILES['imgch']['name'];
if (is_dir( PATHIMAGEN ) == false) {
mkdir( PATHIMAGEN );
}
$directorio = PATHIMAGEN ;
$archfinal1 = $directorio . $nomarchivo1 ;
if (file_exists ($archivo1)){
$pathabs1 = "" ;
move_uploaded_file ($archivo1, $archfinal1 );
if (file_exists ($directorio . $nomarchivo1))
{
$patharch1 = $directorio . $nomarchivo1 ;
$pathabs1=str_replace("\\","\\\\",$patharch1);
}
}
$nombre = $HttpVars->TraerPost('nombre') ;
$keywords = $HttpVars->TraerPost('keywords') ;
$chkpubli = $HttpVars->TraerPost('chkpubli') ;
$destacado = $HttpVars->TraerPost('chkdestacado') ;
$oferta = $HttpVars->TraerPost('chkoferta') ;
if ($chkpubli == "") $chkpubli = 0;
if ($destacado == "") $destacado = 0;
if ($oferta == "") $oferta = 0;
$dcorta = $HttpVars->TraerPost('dcorta') ;
$dlarga = $HttpVars->TraerPost('dlarga') ;
$tips = $HttpVars->TraerPost('tips') ;
$dosis = $HttpVars->TraerPost('dosis') ;
$codigo = $HttpVars->TraerPost('codigo') ;
$precio = $HttpVars->TraerPost('precio') ;
$id_cate = $HttpVars->TraerPost('cmbcategoria') ;
$id_plaga = $HttpVars->TraerPost('cmbplaga') ;
$id_subcate = $HttpVars->TraerPost('cmbsubcate') ;
$sql="INSERT into tbl_productos( nombre, keywords, codigo, precio, dcorta, dlarga, tips, dosis, pathch, filech, destacado, oferta, publicado) VALUES " .
"('".$nombre."','".$keywords."','".$codigo."',".$precio.",'".$dcorta."','".$dlarga."','".$tips."','".$dosis."','".$pathabs1."','".$nomarchivo1."','".$pathadj1."',".$destacado.",".$oferta.",".$chkpubli.")";
$result = mysqli_query( $conexion, $sql );
$agregada = 1;
//grabo las categorias en la tabla relcateprod
$sql = "SELECT MAX(id_prod) as id_prod FROM tbl_productos";
$result = mysqli_query( $conexion, $sql );
$myrow = mysqli_fetch_assoc($result);
$id_prod = $myrow["id_prod"];
$idcate=$HttpVars->TraerPost('id_cate');
while (list ($key,$val) = @each ($idcate)) {
$sql = "INSERT INTO tbl_relcateprod(id_prod, id_cate) VALUES (".$id_prod.",".intval($val).")";
$result = mysqli_query( $conexion, $sql );
}
$idplaga=$HttpVars->TraerPost('id_plaga');
while (list ($key,$val) = @each ($idplaga)) {
$sql = "INSERT INTO tbl_relplagaprod(id_prod, id_plaga) VALUES (".$id_prod.",".intval($val).")";
$result = mysqli_query( $conexion, $sql );
}
}
}
Código HTML:
1
2
3
4
<div class="form-group">
<label for="imgch">Imagen del producto</label>
<input type="file" id="imgch" name="imgch">
</div>
Valora esta pregunta


0