WEB 보안은 언제나 매우 심각한 주제였습니다. SQL 주입은 일반적인 공격 방법입니다. 우리 코드는 비준수 데이터를 처리하고 주입을 방지하도록 설계되었습니다. 그러나 약한 유형의 언어인 PHP에는 항상 우리가 고려하지 못하는 위험이 있습니다. 이 기사에서는 SQL 삽입을 방지하는 간단하면서도 효과적인 방법을 공유합니다! ㅋㅋㅋ 오래전에 본 전문가의 말을 봤습니다. 프로그램 코드의 60%는 다양한 방어를 위한 것이어야 한다는 것입니다.
사실 지금 보면 SQL 인젝션 방지에는 실제로 다양한 매개변수 필터링이 필요하지 않은데, 아래에서 건조 정보 모드가 켜질 예정입니다!
PHP5.x에서는 새로운 mysql 작업 방법----mysqli를 도입하기 시작했습니다. PHP에는 PHP 사전 처리라는 해당 작업 방법도 있습니다. 객체 지향 접근 방식은 매개변수화된 바인딩 작업을 수행하는 데 사용됩니다. 데이터베이스 작업에 대한 모드 드라이버가 다르기 때문에 SQL 주입을 방지하는 데 매우 효과적일 수 있습니다.看 먼저 코드 예를 살펴보겠습니다. R
<!--?php $root = "root"; $pwd = "root"; $host = "localhost"; $database = "database"; $conn = new mysqli($host,$root,$pwd,$database);//面向对象的方式实例化一个对象 $keywords = $_GET['keywords']; $search_sql = "select content from mykey where title = ? ";//其中的?是一个占位符 $search_action = $conn --->prepare($search_sql);//进行预处理操作 $search_action ->bind_param("s",$keywords);//绑定参数,第一个参数表示为上面预处理的的占位符的数量和每一个参数的数据类型,s为字符串,i为整形,d为双精度小数,有几个参数,就写几个s或d或i,比如说iiii,ssss,sidi这样的。然后后面就是有几个参数就写几个要绑定的变量,比如bind_param('sss',$username,$password,$code); $search_action ->bind_result($content);//将结果绑定在相对应的变量上,比如你select了username,password,你就可以写bind_result($usernmae,$password); $search_action ->execute();//执行sql操作 while($search_action ->fetch()){ echo $content.'<br>'; } $search_action ->free_result();//释放内存 $search_action ->close();//结束这个实例化 ?>E는 PHP 전처리의 매우 간단한 예이므로 개발 속도에 매우 편리할 수 있습니다. 따라서 여기를 보면 아직 이해하지 못하는 사람이 많을 것입니다. , 누군가는 이 바인딩 매개변수를 사용하여 SQL 문을 계속 연결하고 있는지 묻고 싶을 수도 있습니다. 만약 조각난 문장이라면 인젝션이 발생하지 않을까요? 이는 동작 원리로 설명해야 할 것입니다. 실제로 준비 작업 중에 해당 문장은 이미 데이터베이스에서 실행되었으며 후속 바인딩 매개변수와 실행도 마찬가지입니다. , 그냥 데이터만 전달하기 때문에 sql문과 전혀 엮이지 않아 당연히 위험한 코드는 실행되지 않게 된다. 따라서 이 모드에서는 SQL 주입을 효과적으로 방어할 수 있습니다. PHP 전처리 클래스에는 유용한 작업이 많이 있습니다. 향후 기사에서는 일반적으로 사용되는 PHP 전처리 개발 설명을 요약하겠습니다. Related Related 권장 사항 :
PHP SQL 주입 및 방지 방지 Classic Case Analysis_php Tutorial
Discuz7.2 FAQ.php SQL 주입 취약성 분석, discuz7.2faq.php_php 자습서
위 내용은 PHP에서 SQL 삽입을 방어하는 간단하고 효율적인 방법 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!