Seguridad de red básica cero (capítulo III -2) PHP conectarse a la base, PHP expresiones regulares

  • Todos los días uno: sintaxis php hay pruebas de penetración o la falta de, en particular, es un papel importante en el actor desarrollo de aplicaciones web.
         Todo el front-end de autenticación basada son inseguros, debe ser verificada por el servidor.
  • En esta parte: php conectarse a la base de datos
         php forma de validación de
         expresiones regulares

Una, la conexión de base de datos php

1. Obtener el paso de parámetros

	<?php
	a = $_GET['id'];     @a = GET['id'] 加@就是假如出错不回显(一句话木马较喜欢用)
	echo $a."<br />";
	
	b = $_post['username'];
	echo $b."<br />"
	
	c = $_COOKIE['user'];
	echo c."<br />";
	?>

2. Utilizar base de datos

	<?php
	 连接数据库
	  方法一:
		  $conn = mysql_connect("127.0.0.1","root","passwword","db_name");
		        //函数			IP	  账户   密码    指定数据库(可不指定)
	  方法二:
		  $conn = mysql_connect("127.0.0.1","root","passwword");
		  mysql_select_db($conn,"db_name");
		  
	   $result = mysql_query($conn,"select * from a");
	    //执行查询语句,并存储在数据集中
	   
	   $row = mysql_fetch_row($result);
      //读取数据集中的内容(该函数)读取结果集中的第一个记录)
    
	
	   $row = mysq_fetch_all($result);
	    //读取结果集的全部数据
	
	   var_dump($row);
	    //输出结果
	
	   mysql_close($conn);
	    //关闭数据库连接
   ?>

 示例:
	<?php
		
		$conn = mysql_connect("127.0.0.1","root","passwod","数据库名");
		    //连接数据库
			
		$result = mysql_query($conn,"select * from python");
			//将执行的结果返回保存到result中
		
		while($row = mysqli_fetch_array($result)){
			//循环遍历结果集,并输出
			echo "因:".$row['前项'];
			echo "果:".$row['后项'];
			echo "<br />";}
		//$a = mysqli_fetch_row($result);
		//var_dump($a);		//输出结果集a的内容
		mysql_close($conn);	//关闭数据库连接
	?>

3. la prevención de inyección SQL:
  filtrar información sensible (código malicioso). los strpos (), strtr ()
  los strpos () // los strpos () devuelve la función de la posición de la primera aparición de la cadena en otra cadena.
  strtr (//) convierte la función de una serie específica de caracteres.
  Para la conversión de tipo. Evitar la presentación de los datos de plomo a un error anormal. (Int) $ a
  uso de la base de datos antes de la operación, la consulta y la separación de datos [el uso avanzado -PDQ]

4. NOTA: La diferencia entre el eco y var_dump:
  echo () - una función salidas o más cadenas.
  echo () - no es una función de la función real, por lo que no tiene que utilizar paréntesis. Sin embargo, si desea pasar más de un parámetro a echo (), utilizando paréntesis, generarán un error de análisis.
  var_dump () - se puede ver la información de la estructura interior, el tipo de matriz, los resultados en una matriz. pantalla de salida muestra el contenido del código, la estructura y el tipo. Esta función puede espiar para todos los tipos de contenido, así como información interna. Esta es una función de depuración, imprimir, exportar, muestran el tipo de función (si la forma de una matriz, los lugares de salida de matrices)
  Die ( "xx") - el contenido de la xx de salida, el final del programa

Dos, la validación de formularios php

1. ¿Cuál es la forma
  marcada -> forma de etiqueta
  principal función es recoger datos
  
2. etiqueta de formulario

  • acción de los datos del formulario de procesamiento local, no escriba si son presentadas a esta página (ruta relativa)
  • modo de parámetros methon pasando: GET (menos masa, viajan rápido) con el POST (transferencia de masa mucho más lento)
  • = _Blank objetivo de abrir un enlace en una nueva ventana
  • = _Parent abre un vínculo en el formulario padre
  • = _Self abre el enlace en la forma actual, este es el valor por defecto
  • = _Top abre el enlace en la forma actual, y sustituir toda la forma actual (marco de página)
    Por ejemplo: <a href="document.html" target="_blank">Haga clic</a>

3. <input type = password,text> Se puede visualizar la contraseña,

4. Algunos función filtro simple (generalmente no es cierto de estas funciones, expresiones para filtrar verificada mediante positivo).
   Estas funciones directamente Baidu, el uso de detalles aparece
   
   strlen () determina la longitud de la cadena (pero sin incluir la nula carácter de fin)
   COUNT () determina el número de elementos de datos en
   los strpos (lo que debe buscar)
   
   , por ejemplo: Find "php" en la cadena de la posición de la primera ocurrencia de

		<?php
			echo strpos("You love php,I love php tool!","php")
				//strpos 对大小写敏感,输出9
			echo stripos("You love php,I love php tool!","PHP")
				//stripos 对大小写不敏感,输出9
		?>
		
    is_numeric()  如果是数字返回true,否则返回false
    is_array()  数组返回true,否则false
    is_null()  为空返回true,否则返回false

5. PHP para interactuar con la base de datos

<?php
  @$uname=$_POST['username'];  //“@”的作用是,假如出现错误,不回显给前端。防止内部数据泄露
  @$passwd = $_POST['password'];
  $conn = mysqli_connect('127.0.0.1','root','password','dbname');
  $sql = "select*from admin where uname='$uname' and passwd='$passwd'";
  $abc = mysqli_query($conn,$sql);
  $xxx = mysqli_fetch_array($abc);
   if($xxx['uname'] === $uname and $xxx['passwd'] === $passwd){
  echo '登录成功';
	}
	else{echo '用户名或密码错误';}
?>

En tercer lugar, las expresiones regulares

1. carácter de escape común:
   \ digital D
   \ D no digital
   \ s espacios en blanco (espacios, tabulaciones, carácter de avance, etc.)
   \ T no está en blanco
   \ w carácter de palabra (26 letras + números + subrayado _)
   \ W es un no-palabra carácter

\ T ficha
   \ r retorno de carro
   \ n nueva línea
   de escape \
   $ coincide con el final
   ^ coincide con el comienzo // Nota: / ab / === / ab ^ $ /
   . Fuera del carácter de nueva línea de todos los tiempos
   * antes del partido un carácter, pero no se limita al número (n-0-)
   + un carácter previo a juego (1-n veces)

Calificador:
   {por ejemplo n-}: {3} 0 -> 0 donde sólo resultados 3 conectados entre sí, tales como 6000
   {n-, por ejemplo}: {2 0,} -> 2 0 siempre que habrá más y emparejado
   {n, m} ejemplo: {2,4} 0 -> partido al menos 2, hasta 4, pero cuando se combina, en correspondencia predeterminada
      , por ejemplo, 10000000000 -> partido a 3 veces (lo suficientemente predeterminado una vez)

Modificador:
   / Ignoro caso de coincidencia de
    ejemplo: / abc / i para su adaptación a ABC45
    
   regla de coincidencia / A tiene que comenzar desde el principio
    , por ejemplo: / abc / A puede ser adaptado a abc45
    
   / X expresión juego vacío
    ejemplo: / 'a bc' / x puede ser igualada a abc45
    
    añadido: modificadores se pueden utilizar en combinación, tal como / las reglas de / regular de Aix
        lo coincidente minúsculas, partido mayúsculas está fuera de la minúscula
 
    [0-9a-z] partidos 0-9, az de entre todos los
    partido [135a-h] entre 1,3,5 y ah todos
    [^ 0-9] partidos, además de que no sea nada 0-9
       * Nota: símbolo significado diferente en diferentes lugares
       
    ha añadido: intervalo, entonces sólo escritura unidades no puede escribir más de [0-3] puede, [400-500] no puede

2. PHP expresiones regulares (expresiones regulares)
   papel: para determinar si los cumple cadena con ciertas reglas (por ejemplo: si el número de teléfono, correo electrónico, etc.).
      Para buscar todas las cadenas (Se utilizan etiquetas HTML) cumplir con las reglas de secuencia de una cadena.
      php uso regular de seguro para añadir "//", que es el formato.

3. el preg_match (cadenas de expresiones regulares coincidentes)
  coincide con la cadena de expresión regular, devuelve un encontrados, que no se encuentra de retorno 0

例如:
 <?php
	 $a = 'a1';
	 $b = '/[0-9]/';
	 echo preg_match($b,$a)		//b中是否有a中的字符串,有则返回1,否则返回0
	?>
	
	preg_replace(正则表达式,'替换内容,检验字符串)
	
例如:
 <?php
	 $a = 'aabbcc136asd';
	 $b = '/[0-9]/';
	 $c = preg_replace($b,'love',$a);
	 echo $c;
 ?>
			输入内容:aabbccloveloveloveasd
			
例2:以数组的形式输出
 <?php
	 $a = array('abc','aabc','ccabc');
	 var_dump(preg_replace('/abc/','love',$a));
 ?>
	 输出结果:array(3) {
						[0]=>
						string(4) "love"
						[1]=>
						string(5) "alove"
						[2]=>
						string(6) "cclove"
						}
						请自行验证,实践出真知

防范SQL注入
<?php
  $a = '1 union select 1,2';
  $b = '/\W|and|or|union|order|0x/';			//0x过滤编码注入
  $c = preg_replace($b,'',$a);
  $d = 'select * from admin where id ='.$c;
  echo $d;
?>
  输出内容:	select * from admin where id =1select12

IV Resumen

  • naturaleza inyección SQL: a los datos de entrada del usuario es tratada como la ejecución de código;
  • Las expresiones regulares se pueden utilizar en la prevención (es decir, el filtro), puede prevenir con eficacia la inyección SQL, XSS, HTML implantación;
  • Hay comunicado costura y no hay un filtro a cabo la inyección de SQL (SQL Injection la naturaleza);
  • La forma es función para enviar los datos a la secuencia de comandos de back-end, escritura backend para procesarlo
  • página web normal: los lenguajes de scripting dinámico, middleware (Tomcat, JBoss), contenedor web de base de datos
Publicado cinco artículos originales · ganado elogios 0 · Vistas 176

Supongo que te gusta

Origin blog.csdn.net/weixin_43660456/article/details/105024997
Recomendado
Clasificación