說說在PHP中,MySQL如何防止SQL注入
阿新 • • 發佈:2020-10-09
方法一:
mysql_real_escape_string -- 轉義 SQL 語句中使用的字串中的特殊字元,並考慮到連線的當前字符集 !
$sql = "select count(*) as ctr from users where username
='".mysql_real_escape_string($username)."' and
password='". mysql_real_escape_string($pw)."' limit 1";
方法二:
開啟magic_quotes_gpc來防止SQL注入。php.ini中有一個設定:magic_quotes_gpc = Off這個預設是關閉的,如果它開啟後將自動把使用者提交對sql的查詢進行轉換,比如把 ' 轉為 '等,對於防止sql注射有重大作用。
如果magic_quotes_gpc=Off,則使用addslashes()函式。
方法三:
自定義函式
/** * 防止sql注入自定義方法一 * author: xiaochuan * @param: mixed $value 引數值 */ function check_param($value=null) { # select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile $str = 'select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile'; if(!$value) { exit('沒有引數!'); }elseif(eregi($str, $value)) { exit('引數非法!'); } return true; } /** * 防止sql注入自定義方法二 * author: xiaochuan * @param: mixed $value 引數值 */ function str_check( $value ) { if(!get_magic_quotes_gpc()) { // 進行過濾 $value = addslashes($value); } $value = str_replace("_", "\_", $value); $value = str_replace("%", "\%", $value); return $value; } /** * 防止sql注入自定義方法三 * author: xiaochuan * @param: mixed $value 引數值 */ function post_check($value) { if(!get_magic_quotes_gpc()) { // 進行過濾 $value = addslashes($value); } $value = str_replace("_", "\_", $value); $value = str_replace("%", "\%", $value); $value = nl2br($value); $value = htmlspecialchars($value); return $value; }
點關注,不迷路
好了各位,以上就是這篇文章的全部內容了,能看到這裡的人呀,都是人才。之前說過,PHP方面的技術點很多,也是因為太多了,實在是寫不過來,寫過來了大家也不會看的太多,所以我這裡把它整理成了PDF和文件,如果有需要的可以
更多學習內容可以訪問【對標大廠】精品PHP架構師教程目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)
以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務程式碼寫多了沒有方向感,不知道該從那裡入手去提升,對此我整理了一些資料,包括但不限於:分散式架構、高可擴充套件、高效能、高併發、伺服器效能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell指令碼、Docker、微服務、Nginx