Sécurité réseau de base zéro (chapitre III -2) PHP connecter à la base, PHP expressions régulières

  • Tous les jours une: syntaxe php est pas de test de pénétration ou l' absence, en particulier, est un rôle important dans l' acteur de développement d'applications web.
         Tous l' authentification frontal sont peu sûr, il doit être vérifié par le serveur.
  • Dans cette partie: php se connecter à la base de données
         PHP sous forme de validation des
         expressions régulières

A, une connexion de base de données php

1. Obtenez le passage de paramètres

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

2. Base de données utilisation

	<?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. prévention d'injection SQL:
  filtrage des informations sensibles (code malveillant). les strpos (), strtr ()
  la fonction strpos () // les strpos () retourne la position de la première occurrence de la chaîne dans une autre chaîne.
  strtr () // convertit une chaîne de caractères spécifique.
  Pour la conversion de type. Évitez de soumettre des données de plomb à une erreur anormale. (Int) $ a l'
  utilisation de la base de données pré-opératoire, la requête et la séparation des données [-PDQ d'utilisation de pointe]

4. NOTE: La différence entre l' écho et var_dump:
  echo () - fonction de l'une ou plusieurs chaînes.
  echo () - il n'est pas une fonction de la fonction réelle, de sorte que vous ne devez pas l' utiliser entre parenthèses. Toutefois, si vous voulez passer plus d'un paramètre à echo (), entre parenthèses à l' aide génère une erreur d'analyse.
  var_dump () - vous pouvez afficher les informations de structure à l' intérieur, le type de tableau, les résultats dans un tableau. affichage de sortie affiche le contenu du code, la structure et le type. Cette fonction peut fouiner pour tous les types de contenu, ainsi que des informations internes. Ceci est une fonction de mise au point, l' impression, l' exportation, montrent le type de fonction (si la forme d'un tableau, les lieux de sortie du réseau)
  Die ( « xx ») - le contenu du xx de sortie, la fin du programme

Deux, formulaire php validation

1. Quelle est la forme
  marquée -> balise form
  fonction principale est de recueillir des données
  
2. tag Formulaire

  • l'action des données sous forme de traitement local, ne pas écrire si elles sont soumises à cette page (chemin relatif)
  • Mode passage de paramètre Methon: GET (moins de masse, se déplace rapidement) avec le POST (masse de transfert beaucoup plus lent)
  • target = _blank d'ouvrir un lien dans une nouvelle fenêtre
  • = _Parent ouvre un lien dans le formulaire parent
  • = _Self ouvre le lien sous la forme actuelle, valeur par défaut
  • = _Top ouvre le lien sous la forme actuelle, et remplacer toute forme actuelle (page d'image)
    Par exemple: <a href="document.html" target="_blank">Cliquez</a>

3. <input type = password,text> Vous pouvez afficher le mot de passe,

4. Une fonction de filtre simple (généralement pas le cas de ces fonctions, expressions à filtre vérifié par positif).
   Ces fonctions directement Baidu, l' utilisation détaillée apparaît
   
   strlen () détermine la longueur de la chaîne (mais ne comprenant pas le caractère de fin null)
   COUNT () détermine le nombre d'éléments de données dans
   les strpos (ce qu'il faut chercher)
   
   , par exemple: Find « php » dans la chaîne de la position de la première occurrence 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 interagir avec la base de données

<?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 '用户名或密码错误';}
?>

Troisièmement, les expressions régulières

1. caractère d'échappement commun:
   \ D numérique
   \ D non-numérique
   \ s des espaces (espace, tabulation, caractère d'alimentation de forme, etc.)
   \ S caractère non-blanc
   \ w caractère de mot (26 lettres + chiffres + underscore _)
   \ W est un non-mot caractère

\ Onglet t
   \ retour chariot r
   \ n newline
   \ s'échapper
   correspond $ à la fin
   ^ correspond au début // Note: / ab / === / ^ ab $ /
   . En dehors du caractère de nouvelle ligne tous les temps
   * avant le match un caractère, mais ne se limite pas au nombre (n-0-)
   + une mise en correspondance caractère avant (1-n fois)

Qualificateur:
   {par exemple n-}: {3} 0 -> 0 où correspond à seulement 3 reliés entre eux, par exemple 6000
   {n-, par exemple}: {2 0,} -> 2 0 tant qu'il y aura de plus en identifié
   {n, m} exemple: {2,4} 0 -> jeu d' au moins deux, jusqu'à 4, mais en cas de concordance, en alignant par défaut ,
      par exemple 10000000000 -> match et 3 fois (par défaut suffisamment une fois)

Modificateur:
   / J'ignore égalant
    exemple: / « abc » / i peut être adaptée à ABC45
    
   / Une règle de correspondance doit commencer dès le début
    , par exemple: / « abc » / A peut être adapté à abc45
    
   expression / X correspondant vide par
    exemple: / « a bc » / x peut être adapté à abc45
    
    ajouté: modificateurs peuvent être utilisés en combinaison, par exemple / les règles de / régulier d'Aix
        ce que les minuscules correspondant, rencontre majuscule est en dehors de la minuscule
 
    [0-9a-z] correspond à 0-9, az de parmi tous
    [135a-h] match entre 1,3,5 et ah tous
    [^ 0-9] correspond , en plus de quoi que ce soit autre que 0-9
       * Remarque: symbole signifie différent dans différents endroits
       
    ajoutés: intervalle, seule écriture unités ne peuvent pas écrire plus de [0-3] peut, [400-500] ne peut pas

2. PHP regex (expression régulière)
   rôle: déterminer si la chaîne est conforme à certaines règles ( par exemple: si le numéro de téléphone, e - mail, etc.).
      Pour trouver toutes les chaînes (balises HTML ont été prises) se conformer aux règles de chaîne d'une chaîne.
      L' utilisation régulière php sûr d'ajouter « // », qui est le format.

3. le preg_match (chaînes de correspondance d'expression régulière)
  correspond à la chaîne d'expression régulière, le retour d' une position trouvée, pas trouvé retour 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 Résumé

  • nature d'injection SQL: une donnée d'entrée d'utilisateur est traité en tant que l'exécution de code;
  • Les expressions régulières peuvent être utilisées dans la prévention (par exemple, le filtre), peut effectivement empêcher l'injection SQL, XSS, HTML implantation;
  • Il y a déclaration couture et il n'y a pas de filtre à injection SQL (SQL nature d'injection);
  • rôle de formulaire est de soumettre les données au script back-end, script back-end pour traiter ce
  • Site normal: les langages de script dynamique, middleware (Tomcat, JBOSS), base de données conteneur Web
Publié cinq articles originaux · louanges gagnées 0 · Vues 176

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43660456/article/details/105024997
conseillé
Classement