>백엔드 개발 >PHP 튜토리얼 >TP 프레임워크를 사용하여 SQL 공격 주입 모방

TP 프레임워크를 사용하여 SQL 공격 주입 모방

韦小宝
韦小宝원래의
2018-03-14 10:51:104207검색

ImitatesqlInject

SEO:

1, 최적화된 경우 제목 부분이 매우 중요하며 웹사이트의 키워드를 최적화하는 데 사용됩니다

검색 엔진은 웹사이트 가중치가 높을 경우 사용자가 키워드를 검색하면 귀하의 웹사이트가 먼저 표시됩니다

2리유 웹사이트---를 가리킵니다. 영어 웹사이트에 일본 웹사이트가 투표했음을 나타냅니다. 영어 웹사이트에 더 많은 투표를 할수록 영어 웹사이트가 더 좋아집니다

SQLinjection 방지:

1 , 사용자 로그인 양식을 만듭니다.

select() 는 모든 레코드를 쿼리합니다.

find() 는 하나의 레코드만 쿼리합니다.

간단한 사용자 이름을 작성합니다. 확인을 위해 '또는 1 또는'를 씁니다. 사용자 이름 양식에서는 사용자 이름이 정확하다는 메시지도 표시됩니다.

질문: 인증 없이 성공한 이유는 무엇입니까?

echo $model->getLastsql();//sqlstatement

를 인쇄해 보세요. 쿼리를 실행한 후 sql 문의 결과는 sql입니다. 삽입된 이유는 작은따옴표

때문입니다:

1, php마법의 따옴표를 통해, 사용자가 입력한 데이터를 탈출하기 위해

php 낮은 버전에서는 기본적으로 활성화되어 사용자가 입력한 데이터를 자동으로 이스케이프합니다. php.ini

이 활성화되어 있으며 이를

Magic_quotes_gpc=On

으로 변경하여 방지할 수 있습니다.

2

를 수정하세요. 사용자가 제출한 데이터를 삭제하세요.

php

addslashes() 함수를 호출하세요. $username=addslashes($_POST['username ' ] );

addslashes 함수를 사용하여 3

을 처리하고

thinkphp시스템 변수를 사용하여 외부 데이터 $this->_server thinkphp

시스템 상수

를 가져옵니다(4 pcs )

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

4 , array로 사용하세요. tp프레임 속 where 조건

5, 쿼리문을

$list=$model->where('user_name="'.$username.'" 으로 직접 작성하고 dept_id ="'.$password.'"')->select();로그인에 실패합니다

예:

//仿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>

위는 thinkphp가 방지하는 방법입니다. sql 공격을 주입하는 방법은 여러 가지가 있습니다. 이를 적어서 연습해 볼 수 있습니다.

관련 권장 사항:

SQL 주입을 방지하는 PHP 메서드의 예

위 내용은 TP 프레임워크를 사용하여 SQL 공격 주입 모방의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.