Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie das TP-Framework, um die SQL-Angriffsinjektion zu imitieren

Verwenden Sie das TP-Framework, um die SQL-Angriffsinjektion zu imitieren

韦小宝
韦小宝Original
2018-03-14 10:51:104159Durchsuche

NachahmungSQLInjektion

SEO:

1, wenn optimiert, ist der Teil Titel sehr wichtig und wird zur Optimierung der Schlüsselwörter unserer Website

verwendet Suchmaschinen klassifizieren Ihre Website anhand von Schlüsselwörtern, wenn Benutzer bei der Suche nach Schlüsselwörtern zuerst Ihre Website sehen

2, Japan und die Website --- verweisen auf die englische Website, was darauf hinweist, dass die japanische Website für die englische Website gestimmt hat, wenn Sie der englischen Website mehr Stimmen geben Sie besetzen, desto besser ist die Website auf Englisch

SQL-Injection verhindern:

1, erstellen Sie ein Benutzer-Login-Formular

select() fragt alle Datensätze ab

find() fragt nur einen Datensatz ab

Schreiben Sie eine einfache Benutzernamenüberprüfung, schreiben Sie 'oder 1 oder' in das Benutzernamenformular. Es wird angezeigt, dass der Benutzername korrekt ist,

Frage: Warum ist es ohne Verifizierung gelungen?

echo $model->getLastsql();//Drucken Sie die sql-Anweisung aus

Nachdem wir die ausgeführte sql-Anweisung abgefragt hatten, stellten wir fest, dass die Ursache der sql-Injektion das einfache Anführungszeichen

Weil:

1, über php Magische Anführungszeichen , um die vom Benutzer eingegebenen Daten zu maskieren

Die niedrigere Version von PHP ist standardmäßig aktiviert, wodurch der Benutzer automatisch maskiert wird -Eingegebene Daten

php.ini in

werden aktiviert und in

Magic_quotes_gpc=On

kann eine korrekte Überprüfung verhindern

2

und die vom Benutzer übermittelten Daten umgehen

Rufen Sie die

addslashes() Funktion von php

$username= addslashes($_POST[' Benutzername']);

Verwenden Sie die Funktion addslashes, um

3

zu verarbeiten, und verwenden Sie die Systemvariablen von thinkphp Externe Daten abrufen $this->_server

thinkphp

Systemkonstanten (4)

$this->_post('username', 'addslashes');

4, verwenden Sie Array als tp im Rahmen wobeiBedingungen

5, schreiben Sie die Abfrageanweisung direkt als

$list=$model->where('user_name="'.$username.'" and dept_id="'.$password.'"')-> ; select();Die Anmeldung wird nicht erfolgreich sein

Beispiel:

//仿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 '登录失败';
    }
   
 }

tpl :

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

Beim Oben geht es um die Verhinderung von SQL-Injection-Angriffen. Es gibt mehr als eine Methode. Sie können versuchen, sie aufzuschreiben und zu üben.

Verwandte Empfehlungen:

Beispiele für PHP-Methoden zur Verhinderung von SQL-Injection

Das obige ist der detaillierte Inhalt vonVerwenden Sie das TP-Framework, um die SQL-Angriffsinjektion zu imitieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn