Utilisez le framework TP pour imiter l'injection d'attaque SQL

韦小宝
Libérer: 2023-03-21 11:20:02
original
4164 Les gens l'ont consulté

Imitersqlinjection

SEO :

1, si optimisée, la partie titre est très importante, utilisée pour optimiser les mots-clés de notre site internet

Les moteurs de recherche classeront votre site Web en fonction de mots-clés. Si le poids du site Web est élevé, lorsque les utilisateurs recherchent des mots-clés, ils verront votre site Web en premier

2, le Japon et le site --- pointent vers le site anglais, indiquant que le site japonais a voté pour le site anglais, si vous donnez le site anglais Plus il y a de votes vous lancez un casting, meilleur est le site Web en anglais

Prévenir l'injection SQL :

1, créez un formulaire de connexion utilisateur

select() interrogera tous les enregistrements

find() n'interrogera qu'un seul enregistrement

Écrivez une simple vérification du nom d'utilisateur, écrivez 'ou 1 ou' dans le formulaire du nom d'utilisateur, .

Question : Pourquoi a-t-il réussi sans vérification ?

echo $model->getLastsql();//Imprimez l'instruction sql

Après avoir interrogé l'instruction sql exécutée, nous avons constaté que la cause de l'injection sql était le guillemet simple

Parce que :

1, via php Citations magiques pour échapper aux données saisies par l'utilisateur

La version inférieure de php est activée par défaut, ce qui échappera automatiquement à l'utilisateur -les données saisies

php.ini dans

sont activées et modifiées en

Magic_quotes_gpc=On

peut empêcher une vérification correcte

2 et échapper aux données soumises par l'utilisateur

Appelez le addslashes() fonction de php

$username= addlashes($_POST[' username']);Utilisez la fonction addslashes pour traiter

3 et utilisez les variables système de thinkphp Obtenir des données externes $this->_server

thinkphpConstantes système (4)

$this->_post('nom d'utilisateur', 'addslashes');

4, utilisez tableau comme tp dans le cadre conditions

5, écrivez directement l'instruction de requête sous la forme

$list=$model->where('user_name="'.$username.'" et dept_id="'.$password.'"')-> ; select();La connexion ne réussira pas

Exemple :

//仿sql注入
public function login(){
 $this->display();
 }
public function verify(){
 //用户名'or 1 or'登录会提示登录成功,是不正确的
 //方法1修改ini.php
 $username=$_POST['username'];
 $password=$_POST['password'];
 //方法2
 /*$username=addslashes($_POST['username']);
 $password=$_POST['password'];
 //方法3
 $this->_post('username','addslashes');
 $password=$_POST['password'];
 //方法4数组
 $cond['user_name']=$username;
 $cond['dept_id']=$password;
 $list=$model->where($cond)->find();*/
 
 $model=M('User');
 //方法5
    // $list=$model->where('user_name="'.$username.'" and dept_id="'.$password.'"')->select();
  $list=$model->where("user_name='$username' and dept_id='$password'")->select();
  echo $model->getLastsql();//打印出sql语句
  if($list){
   echo '登录成功';
   }else{
    echo '登录失败';
    }
   
 }
Copier après la connexion

tpl :

<form action="URL/verify" method="post">
用户名:<input type="text" name="username">
密码:<input type="text" name="password">
<input type="submit" value="提交">
</form>
Copier après la connexion

Ce qui précède concerne thinkphp empêchant les attaques par injection SQL. Il existe plusieurs méthodes. Vous pouvez essayer de l'écrire et de la mettre en pratique.

Recommandations associées :

Exemples de méthodes PHP pour empêcher l'injection SQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal