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 공격을 주입하는 방법은 여러 가지가 있습니다. 이를 적어서 연습해 볼 수 있습니다.
관련 권장 사항:
위 내용은 TP 프레임워크를 사용하여 SQL 공격 주입 모방의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!