SQL 주입은 일반적으로 불규칙하고 느슨한 문법으로 인해 발생하며, 문제는 SQL 문에서 발생하며 결정적인 요인은 인용(')입니다. 다음과 같습니다:
$sql = "delete from table where id ='$id'" ;
정상적으로 제출되면 제출된 데이터의 일부가 삭제됩니다. 제출된 ID가 (1 ’ 또는 1 #)이면 sql 문은delete from table where id = '1'or 1 #';
이 됩니다. 이 경우 테이블 전체가 삭제되어 되돌릴 수 없는 결과가 발생합니다.
인용부호에서 문제가 발생하므로 그냥 이스케이프 처리하세요(')
<code>addslashes(<span>$str</span>) <span>//建议使用下面的,可以避免出现字符集问题</span> mysql_real_escape_string(<span>$str</span>,<span>$link</span>)</code>
<code><span>//避免整型数据可能不被sql增加引号,强制在转换后的数据使用引号包裹</span><span><span>function</span><span>(<span>$str</span>)</span>{</span><span>return</span><span>"'"</span>.mysql_real_escape_string(<span>$str</span>,<span>$this</span>->link).<span>"'"</span>; }</code>').addClass를 사용할 수 있는 두 가지 기능을 제공합니다. ('사전 번호 매기기').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });
위 내용은 PHP에서의 SQL 주입 방지에 대한 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.