PHP - vulnerabilidad en subida de archivos de formulario php

 
Vista:
sin imagen de perfil
Val: 72
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por fanatimillo (27 intervenciones) el 27/07/2018 21:26:57
hola a todos, hace tiempo que no encuentro una solucion practica para poder solucionar un problema de vulnerabilidad que tengo que hace que cualquiera pueda subir codigo malicioso en mi sitio,
tengo un backend que uso mucho donde se pueden subir imagenes, y tmb contnido como pdf y doc, el problema es que no tengo restringido nada asi que todo el tiempo algun robot o hack sube php y me rompe todo el sitio,
dejo un par del codigo que suelo utilizar a ver si alguno me puede dar una mano,

muchisimas gracias de antemano

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
$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);
    }
}
//adjunto1
$adj1=$_FILES['adj1']['tmp_name'];
$nomadj1=$_FILES['adj1']['name'];
 
if (is_dir( PATHIMAGEN ) == false) {
    mkdir( PATHIMAGEN );
}
 
$directorio = PATHIMAGEN ;
$adj1final1 = $directorio . $nomadj1 ;
if (file_exists ($adj1)){
    $pathadj1 = "" ;
    move_uploaded_file ($adj1, $adj1final1 );
    if (file_exists ($directorio . $nomadj1))
    {
        $pathadj1 = $directorio . $nomadj1 ;
        $pathadj1=str_replace("\\","\\\\",$pathadj1);
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.107
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por Yamil Bracho (886 intervenciones) el 27/07/2018 21:46:48
Chequea la extension del archivo que estas subiendo. por ejemplo :

1
2
3
4
5
6
$allowed =  array('gif','png' ,'jpg');
$filename = $_FILES['adj1']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) {
    echo 'error';
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 72
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por fanatimillo (27 intervenciones) el 27/07/2018 21:53:11
gracias por la respuesta.
hice esa prueba, y me da el error en el echo , el tema es que el formulario se envia igual por lo cual el archivo se sube de todas formas, que debería poner para que muestre el error y no siga con el envío... ? gracias y disculpa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.107
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por Yamil Bracho (886 intervenciones) el 27/07/2018 22:02:17
El envio continua hasta que sube el archivo pero entonces en este codigo del lado del servidor puedes cheuqear la extension del archivos y demas cosas que puedes hacer para validar que el archivo sea el indicado
Que mensaje te muestra ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 72
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por fanatimillo (27 intervenciones) el 27/07/2018 22:04:23
me muestra el echo de "error" pero hace el envio correctamente,
te pego el codigo completo que uso muchas gracias!

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?
require_once("include/includes.php");
if (($HttpVars->TraerSession('adminValido')	!= "si")){
	header("Location: index.php");
}
$idUsuarioName = $_SESSION['idUsuarioAdminSUser'];
$imagespath = "imagenes/";
$agregada = 0;
$existe = 0;
 
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);
			}
		}
		//adjunto1
		$allowed = array('gif','png' ,'jpg');
		$adj1=$_FILES['adj1']['tmp_name'];
		$nomadj1=$_FILES['adj1']['name'];
		$ext = pathinfo($nomadj1, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) {
echo 'error no es una extension valida';
}
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj1final1 = $directorio . $nomadj1 ;
		if (file_exists ($adj1)){
			$pathadj1 = "" ;
			move_uploaded_file ($adj1, $adj1final1 );
			if (file_exists ($directorio . $nomadj1))
			{
				$pathadj1 = $directorio . $nomadj1 ;
				$pathadj1=str_replace("\\","\\\\",$pathadj1);
			}
		}
		//adjunto2
		$adj2=$_FILES['adj2']['tmp_name'];
		$nomadj2=$_FILES['adj2']['name'];
 
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj2final2 = $directorio . $nomadj2 ;
		if (file_exists ($adj2)){
			$pathadj2 = "" ;
			move_uploaded_file ($adj2, $adj2final2 );
			if (file_exists ($directorio . $nomadj2))
			{
				$pathadj2 = $directorio . $nomadj2 ;
				$pathadj2=str_replace("\\","\\\\",$pathadj2);
			}
		}
 
		//adjunto3
		$adj3=$_FILES['adj3']['tmp_name'];
		$nomadj3=$_FILES['adj3']['name'];
 
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj3final3 = $directorio . $nomadj3 ;
		if (file_exists ($adj3)){
			$pathadj3 = "" ;
			move_uploaded_file ($adj3, $adj3final3 );
			if (file_exists ($directorio . $nomadj3))
			{
				$pathadj3 = $directorio . $nomadj3 ;
				$pathadj3=str_replace("\\","\\\\",$pathadj3);
			}
		}
 
		//adjunto4
		$adj4=$_FILES['adj4']['tmp_name'];
		$nomadj4=$_FILES['adj4']['name'];
 
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj4final4 = $directorio . $nomadj4 ;
		if (file_exists ($adj4)){
			$pathadj4 = "" ;
			move_uploaded_file ($adj4, $adj4final4 );
			if (file_exists ($directorio . $nomadj4))
			{
				$pathadj4 = $directorio . $nomadj4 ;
				$pathadj4=str_replace("\\","\\\\",$pathadj4);
			}
		}
 
		$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') ;
		$label1 = $HttpVars->TraerPost('label1') ;
		$label2 = $HttpVars->TraerPost('label2') ;
		$label3 = $HttpVars->TraerPost('label3') ;
		$label4 = $HttpVars->TraerPost('label4') ;
		$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, adjunto1, adjunto2, adjunto3, adjunto4, label1, label2, label3, label4, destacado, oferta, publicado)  VALUES " .
		                         "('".$nombre."','".$keywords."','".$codigo."',".$precio.",'".$dcorta."','".$dlarga."','".$tips."','".$dosis."','".$pathabs1."','".$nomarchivo1."','".$pathadj1."','".$pathadj2."','".$pathadj3."','".$pathadj4."','".$label1."','".$label2."','".$label3."','".$label4."',".$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 );
		}
	}
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.107
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por Yamil Bracho (886 intervenciones) el 27/07/2018 22:24:09
Despues de
1
2
3
4
if(!in_array($ext,$allowed) ) {
 
echo 'error no es una extension valida';
}

colocal else { y cierra en la ultima instruccion donde esta el codigo que ejecutas si el archivo estuviera bien. Es decir
1
2
3
4
5
6
7
8
if(!in_array($ext,$allowed) ) {
echo 'error no es una extension valida';
} else {
	if (is_dir( PATHIMAGEN ) == false) {
		mkdir( PATHIMAGEN );
	}
   ...
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 72
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por fanatimillo (27 intervenciones) el 27/07/2018 22:29:25
lo hice de esta forma segun lo que entendi de lo que me pusiste y me paso lo mismo, me dio el error pero lo grabo normalmente... mostrando sí el mensaje de extension invalida, pero como si fuera lo mismo que nada.

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
<?
require_once("include/includes.php");
if (($HttpVars->TraerSession('adminValido')	!= "si")){
	header("Location: index.php");
}
$idUsuarioName = $_SESSION['idUsuarioAdminSUser'];
$imagespath = "imagenes/";
$agregada = 0;
$existe = 0;
 
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);
			}
		}
		//adjunto1
		$allowed = array('gif','png' ,'jpg');
		$adj1=$_FILES['adj1']['tmp_name'];
		$nomadj1=$_FILES['adj1']['name'];
		$ext = pathinfo($nomadj1, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) {
echo 'extension invalida';
} else {
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj1final1 = $directorio . $nomadj1 ;
		if (file_exists ($adj1)){
			$pathadj1 = "" ;
			move_uploaded_file ($adj1, $adj1final1 );
			if (file_exists ($directorio . $nomadj1))
			{
				$pathadj1 = $directorio . $nomadj1 ;
				$pathadj1=str_replace("\\","\\\\",$pathadj1);
			}
		}
		}
		//adjunto2
		$adj2=$_FILES['adj2']['tmp_name'];
		$nomadj2=$_FILES['adj2']['name'];
 
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj2final2 = $directorio . $nomadj2 ;
		if (file_exists ($adj2)){
			$pathadj2 = "" ;
			move_uploaded_file ($adj2, $adj2final2 );
			if (file_exists ($directorio . $nomadj2))
			{
				$pathadj2 = $directorio . $nomadj2 ;
				$pathadj2=str_replace("\\","\\\\",$pathadj2);
			}
		}
 
		//adjunto3
		$adj3=$_FILES['adj3']['tmp_name'];
		$nomadj3=$_FILES['adj3']['name'];
 
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj3final3 = $directorio . $nomadj3 ;
		if (file_exists ($adj3)){
			$pathadj3 = "" ;
			move_uploaded_file ($adj3, $adj3final3 );
			if (file_exists ($directorio . $nomadj3))
			{
				$pathadj3 = $directorio . $nomadj3 ;
				$pathadj3=str_replace("\\","\\\\",$pathadj3);
			}
		}
 
		//adjunto4
		$adj4=$_FILES['adj4']['tmp_name'];
		$nomadj4=$_FILES['adj4']['name'];
 
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj4final4 = $directorio . $nomadj4 ;
		if (file_exists ($adj4)){
			$pathadj4 = "" ;
			move_uploaded_file ($adj4, $adj4final4 );
			if (file_exists ($directorio . $nomadj4))
			{
				$pathadj4 = $directorio . $nomadj4 ;
				$pathadj4=str_replace("\\","\\\\",$pathadj4);
			}
		}
 
		$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') ;
		$label1 = $HttpVars->TraerPost('label1') ;
		$label2 = $HttpVars->TraerPost('label2') ;
		$label3 = $HttpVars->TraerPost('label3') ;
		$label4 = $HttpVars->TraerPost('label4') ;
		$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, adjunto1, adjunto2, adjunto3, adjunto4, label1, label2, label3, label4, destacado, oferta, publicado)  VALUES " .
		                         "('".$nombre."','".$keywords."','".$codigo."',".$precio.",'".$dcorta."','".$dlarga."','".$tips."','".$dosis."','".$pathabs1."','".$nomarchivo1."','".$pathadj1."','".$pathadj2."','".$pathadj3."','".$pathadj4."','".$label1."','".$label2."','".$label3."','".$label4."',".$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 );
		}
	}
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.107
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por YamilBracho (886 intervenciones) el 27/07/2018 22:44:47
manda a imprimir que tiene $ext

die($ext);
if(!in_array($ext,$allowed) ) {
...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 72
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por gonzalo (27 intervenciones) el 13/08/2018 16:19:22
hola, el problema que ahora estoy teniendo es que si o si me esta validando que en el campo "adjunto" suba un archivo, y yo quiero que se pueda o no subir un adjunto, gracias por toda la ayuda.

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?
require_once("include/includes.php");
if (($HttpVars->TraerSession('adminValido')	!= "si")){
	header("Location: index.php");
}
$idUsuarioName = $_SESSION['idUsuarioAdminSUser'];
$imagespath = "imagenes/";
$agregada = 0;
$existe = 0;
 
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);
			}
		}
		//adjunto1
		$allowed = array('gif','png' ,'jpg', 'jpeg', 'pdf','docx','doc');
		$adj1=$_FILES['adj1']['tmp_name'];
		$nomadj1=$_FILES['adj1']['name'];
		$ext = pathinfo($nomadj1, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) {
$msjextension = '<div class="alert alert-danger" role="alert">Los archivos deben ser GIF, PNG, JPG, PDF o DOC</div>';
} else {
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj1final1 = $directorio . $nomadj1 ;
		if (file_exists ($adj1)){
			$pathadj1 = "" ;
			move_uploaded_file ($adj1, $adj1final1 );
			if (file_exists ($directorio . $nomadj1))
			{
				$pathadj1 = $directorio . $nomadj1 ;
				$pathadj1=str_replace("\\","\\\\",$pathadj1);
			}
		}
		//adjunto2
		$adj2=$_FILES['adj2']['tmp_name'];
		$nomadj2=$_FILES['adj2']['name'];
 
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj2final2 = $directorio . $nomadj2 ;
		if (file_exists ($adj2)){
			$pathadj2 = "" ;
			move_uploaded_file ($adj2, $adj2final2 );
			if (file_exists ($directorio . $nomadj2))
			{
				$pathadj2 = $directorio . $nomadj2 ;
				$pathadj2=str_replace("\\","\\\\",$pathadj2);
			}
		}
 
		//adjunto3
		$adj3=$_FILES['adj3']['tmp_name'];
		$nomadj3=$_FILES['adj3']['name'];
 
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj3final3 = $directorio . $nomadj3 ;
		if (file_exists ($adj3)){
			$pathadj3 = "" ;
			move_uploaded_file ($adj3, $adj3final3 );
			if (file_exists ($directorio . $nomadj3))
			{
				$pathadj3 = $directorio . $nomadj3 ;
				$pathadj3=str_replace("\\","\\\\",$pathadj3);
			}
		}
 
		//adjunto4
		$adj4=$_FILES['adj4']['tmp_name'];
		$nomadj4=$_FILES['adj4']['name'];
 
		if (is_dir( PATHIMAGEN ) == false) {
			mkdir( PATHIMAGEN );
		}
 
		$directorio = PATHIMAGEN ;
		$adj4final4 = $directorio . $nomadj4 ;
		if (file_exists ($adj4)){
			$pathadj4 = "" ;
			move_uploaded_file ($adj4, $adj4final4 );
			if (file_exists ($directorio . $nomadj4))
			{
				$pathadj4 = $directorio . $nomadj4 ;
				$pathadj4=str_replace("\\","\\\\",$pathadj4);
			}
		}
 
		$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') ;
		$label1 = $HttpVars->TraerPost('label1') ;
		$label2 = $HttpVars->TraerPost('label2') ;
		$label3 = $HttpVars->TraerPost('label3') ;
		$label4 = $HttpVars->TraerPost('label4') ;
		$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, adjunto1, adjunto2, adjunto3, adjunto4, label1, label2, label3, label4, destacado, oferta, publicado)  VALUES " .
		                         "('".$nombre."','".$keywords."','".$codigo."',".$precio.",'".$dcorta."','".$dlarga."','".$tips."','".$dosis."','".$pathabs1."','".$nomarchivo1."','".$pathadj1."','".$pathadj2."','".$pathadj3."','".$pathadj4."','".$label1."','".$label2."','".$label3."','".$label4."',".$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 );
		}
	}
}
 
$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') ;
		$label1 = $HttpVars->TraerPost('label1') ;
		$label2 = $HttpVars->TraerPost('label2') ;
		$label3 = $HttpVars->TraerPost('label3') ;
		$label4 = $HttpVars->TraerPost('label4') ;
		$codigo = $HttpVars->TraerPost('codigo') ;
		$precio = $HttpVars->TraerPost('precio') ;
		$id_cate = $HttpVars->TraerPost('cmbcategoria') ;
		$id_plaga = $HttpVars->TraerPost('cmbplaga') ;
		$id_subcate = $HttpVars->TraerPost('cmbsubcate') ;}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.107
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por Yamil Bracho (886 intervenciones) el 13/08/2018 16:35:55
Esn es ecaso tendria que hacer la validacion con Javascript usando FileAPI o quizas tomando los datos del archivo y enviarlos a un script PHP via AJAX para hacer la validacion.
Pero igual el hacker pudiera enviarte el archivo por una peticion fabricada asi que tendrias que tener el codigo de validacion igual en el servidor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 72
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

vulnerabilidad en subida de archivos de formulario php

Publicado por gonzalo (27 intervenciones) el 13/08/2018 16:49:51
si, pero ahi ya no tengo idea cómo hacerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar