鈥嬪弬鏁板寲鏌ヨ鈥?/strong>鈥嬪氨鏄綘鐨勬晳鍛界ɑ鑽夛紒涓句釜鏍楀瓙" />
  1. 主页 > 好文章

参数化查询与输入验证:eb开发必学的SQL注入防御技巧


涓€銆佸弬鏁板寲鏌ヨ锛氳SQL璇彞鍜岀敤鎴疯緭鍏?鍒掓竻鐣岄檺"

鍏勫紵浠紝浣犱滑鏈夋病鏈夐亣鍒拌繃杩欑鍦烘櫙锛熺敤鎴峰湪鍓嶇杈撳叆涓敤鎴峰悕锛岀粨鏋滆繖璐у伔鍋峰浜嗘' OR 1=1 --杩涙潵锛岀洿鎺ユ妸浣犳暟鎹簱鑰佸簳閮芥巰浜嗐€傝繖鏃跺€欌€?strong>鈥嬪弬鏁板寲鏌ヨ鈥?/strong>鈥嬪氨鏄綘鐨勬晳鍛界ɑ鑽夛紒

涓句釜鏍楀瓙馃尠锛氬亣璁炬湁涓櫥褰曞姛鑳斤紝鏂版墜鍙兘浼氭妸鐢ㄦ埛杈撳叆鐩存帴鎷兼帴鍒癝QL璇彞閲岋細

sql澶嶅埗
"SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'"

杩欏啓娉曠畝鐩存槸鍦ㄥ榛戝璇?娆㈣繋鍏変复"锛佽€岀敤鍙傛暟鍖栨煡璇㈢殑璇濓紝浠g爜灏卞彉鎴愪簡锛?/p>

python澶嶅埗
cursor.execute("SELECT * FROM users WHERE username=%s AND password=%s", (username, password))

鐪嬪埌娌★紵鐢ㄦ埛杈撳叆琚杩?s杩欎釜"闅旂鑸?閲岋紝灏辩畻杈撳叆閲屾湁濡栭瓟楝兼€篃缈讳笉璧锋氮php.cn銆傚氨鍍忕粰SQL璇彞绌夸簡灞傞槻寮硅。锛岀浣犺緭鍏ュ暐閮界粰鎴戣€佽€佸疄瀹炲綋瀛楃涓插鐞嗭紒


浜屻€佽緭鍏ラ獙璇侊細瀹佸彲閿欐潃涓€鍗冿紝涓嶅彲鏀捐繃涓€涓壒娈婂瓧绗?/h3>

寰堝灏忕櫧瑙夊緱鍙傛暟鍖栨煡璇㈠氨鑳介珮鏋曟棤蹇т簡锛熷浘鏍峰浘妫牬锛佲€?strong>鈥嬭緭鍏ラ獙璇佲€?/strong>鈥嬫墠鏄湡姝g殑瀹堥棬鍛樸€傚ソ姣斾綘鍘诲搴楋紝淇濆畨涓嶄粎瑕佹煡韬唤璇侊紙鍙傛暟鍖栵級锛岃繕寰楃敤閲戝睘鎺㈡祴鍣ㄦ壂浣犲叏韬紙杈撳叆楠岃瘉锛夈€?/p>

杩欓噷鏁欏ぇ瀹朵袱涓粷鎷涳細

  1. 鈥?strong>鈥嬬櫧鍚嶅崟楠岃瘉鈥?/strong>鈥嬶細鍙厑璁哥壒瀹氬瓧绗﹂€氳繃锛屾瘮濡傛墜鏈哄彿鍙帴鍙楁暟瀛?/li>
  2. 鈥?strong>鈥嬮粦鍚嶅崟杩囨护鈥?/strong>鈥嬶細鎶?code>; -- ' "杩欎簺鍗遍櫓绗﹀彿缁熺粺骞叉帀

涓句釜瀹炴垬妗堜緥馃摑锛氭煇鐢靛晢缃戠珯鐨勫晢鍝佹悳绱㈠姛鑳斤紝鍘熸湰鐩存帴鎷兼帴鐢ㄦ埛杈撳叆锛?/p>

sql澶嶅埗
"SELECT * FROM products WHERE name LIKE '%" + keyword + "%'"

缁撴灉榛戝杈撳叆%' UNION SELECT username,password FROM users --锛岀洿鎺ョ洍璧扮敤鎴锋暟鎹€傚悗鏉ヤ粬浠仛浜嗕笁浠朵簨锛?/p>

  • 闄愬埗鍏抽敭璇嶉暱搴︼紙鏈€澶?0瀛楃锛?/li>
  • 杩囨护鎺夊崟寮曞彿绛夌壒娈婄鍙?/li>
  • 鍙厑璁镐腑鏂?鑻辨枃/鏁板瓧缁勫悎
    杩欏缁勫悎鎷虫墦涓嬫潵锛孲QL娉ㄥ叆鐩存帴鍑夊噳wapbaike.baidu.com

涓夈€佸瓨鍌ㄨ繃绋?vs ORM妗嗘灦锛氬摢绉嶆洿閫傚悎闃插尽鎴橈紵

鐜板湪鏈変釜鐏甸瓊鎷烽棶锛氱敤鈥?strong>鈥嬪瓨鍌ㄨ繃绋嬧€?/strong>鈥嬭繕鏄€?strong>鈥婳RM妗嗘灦鈥?/strong>鈥嬫洿瀹夊叏锛熷挶浠仛涓姣旓細

闃插尽鏂瑰紡浼樼偣缂虹偣閫傜敤鍦烘櫙
瀛樺偍杩囩▼棰勭紪璇?鏉冮檺闅旂缁存姢鎴愭湰楂?/td>澶嶆潅涓氬姟閫昏緫
ORM妗嗘灦鑷姩鍙傛暟鍖?/td>澶嶆潅鏌ヨ鎬ц兘宸?/td>蹇€熷紑鍙戦」鐩?/td>
鍘熺敓SQL+鍙傛暟鍖?/td>鐏垫椿鎬у己瀹规槗鎵嬫粦鍑洪敊绠€鍗曟煡璇㈠満鏅?/td>

涓汉鏇存帹鑽愭柊鎵嬬敤ORM妗嗘灦锛屽儚Django鐨凮RM銆丼pring Data JPA杩欎簺锛屽畠浠細鑷姩甯綘鍋氬弬鏁板寲澶勭悊銆備笉杩囪娉ㄦ剰鍒敤鍘熺敓SQL鏌ヨ杩欎釜鍚庨棬鍔熻兘锛屽惁鍒欏墠鍔熷敖寮?span>鎼滅嫍鐧剧


鍥涖€侀偅浜涘勾鎴戜滑韪╄繃鐨勫潙锛氱湡瀹炴渚嬪垎鏋?/h3>

璇翠釜琛€娉暀璁煉旓細2018骞存煇鏀垮簻绯荤粺琚粦锛屽氨鏄洜涓哄紑鍙戝皬鍝ュ啓浜嗚繖鏍风殑浠g爜锛?/p>

java澶嶅埗
String sql = "UPDATE user SET role='admin' WHERE id=" + request.getParameter("id");

榛戝鐩存帴鎶奿d鍙傛暟鏀规垚0; DROP TABLE audit_log --锛屼笉浠呮彁鏉冩垚鍔燂紝杩樻妸瀹¤鏃ュ織琛ㄧ粰鎵簡...鍚庢潵浠栦滑鍋氫簡涓変欢浜嬶細

  1. 鎵€鏈塖QL鏀圭敤PreparedStatement
  2. 鏁版嵁搴撹处鍙锋潈闄愪粠root闄嶇骇涓哄彧璇?/li>
  3. 閮ㄧ讲浜嗘暟鎹簱闃茬伀澧?br/> 鐜板湪涓夊勾杩囧幓浜嗭紝鍐嶄篃娌″嚭杩囧畨鍏ㄤ簨鏁?span>jiangmen.gov.cn

浜斻€佺粓鏋侀槻寰℃柟妗堬細浜斿眰闃叉姢缃戞惌寤烘寚鍗?/h3>

缁欏悇浣嶇敾涓噸鐐桂煋岋紝鐪熸闈犺氨鐨勯槻寰′綋绯昏鍍忔磱钁变竴鏍峰眰灞傚寘瑁癸細

  1. 鈥?strong>鈥嬪墠绔繃婊も€?/strong>鈥嬶細鐢ㄦ鍒欒〃杈惧紡鏍¢獙杈撳叆鏍煎紡
  2. 鈥?strong>鈥嬫湇鍔$楠岃瘉鈥?/strong>鈥嬶細鐧藉悕鍗?榛戝悕鍗曞弻閲嶈繃婊?/li>
  3. 鈥?strong>鈥嬪弬鏁板寲鏌ヨ鈥?/strong>鈥嬶細鎵€鏈塖QL蹇呴』浣跨敤棰勭紪璇?/li>
  4. 鈥?strong>鈥嬫渶灏忔潈闄愬師鍒欌€?/strong>鈥嬶細鏁版嵁搴撹处鍙峰彧缁欏繀瑕佹潈闄?/li>
  5. 鈥?strong>鈥嬫紡娲炴壂鎻忊€?/strong>鈥嬶細瀹氭湡鐢⊿QLMap绛夊伐鍏疯嚜鏌?/li>

璁颁綇锛屽畨鍏ㄦ槸涓郴缁熷伐绋嬨€傚氨鍍忎綘涓嶈兘鍙粰瀹堕棬涓婇攣鍗翠笉鍏崇獥鎴凤紝闃插尽SQL娉ㄥ叆涔熷緱鍏ㄦ柟浣嶅竷闃层€傛渶杩戝府鏈嬪弸鍏徃鍋氭笚閫忔祴璇曟椂锛屽彂鐜颁粬浠櫧鐒剁敤浜嗗弬鏁板寲鏌ヨ锛屼絾鏈変釜鍒嗛〉鏌ヨ灞呯劧鐢ㄤ簡瀛楃涓叉嫾鎺?code>LIMIT ${page},${size}锛岀粨鏋滆娉ㄥ叆鎴愬姛鈥斺€斾綘鐪嬶紝绋嶆湁涓嶆厧灏变細缈昏溅php.cn


涓汉瑙傜偣鏃堕棿

鍦ㄥ畨鍏ㄧ晫娣蜂簡杩欎箞澶氬勾锛屾垜鍙戠幇涓湁瓒g幇璞★細80%鐨凷QL娉ㄥ叆婕忔礊閮藉嚭鑷?鎴戣寰楄繖娈典唬鐮佹病闂"鐨勮嚜淇°€傚缓璁ぇ瀹跺吇鎴愪笁涓範鎯細

  1. 鍐欏畬SQL鍏堥棶鑷繁锛氳繖閲岃兘涓嶈兘鏀规垚鍙傛暟鍖栵紵
  2. 鐪嬪埌鐢ㄦ埛杈撳叆灏辨潯浠跺弽灏勶細杩欒揣鏄笉鏄兂鎼炰簨鎯咃紵
  3. 瀹氭湡澶嶆煡涓夊勾鍓嶅啓鐨勪唬鐮侊紙浣犱細琚嚜宸辫牏鍝級

鏈€鍚庨€佸ぇ瀹朵竴鍙ヨ瘽锛氣€?strong>鈥嬪畨鍏ㄦ病鏈夐摱寮癸紝浣嗘瘡涓槻寰℃帾鏂介兘鏄粦瀹㈣矾涓婄殑缁婅剼鐭斥€?/strong>鈥嬨€備笌鍏剁瓑婕忔礊琚埄鐢ㄥ悗鍔犵彮鎿﹀眮鑲★紝涓嶅鐜板湪灏辨妸杩欎簺闃插尽鎶€宸х敤璧锋潵锛?/p>

本文由嘻道妙招独家原创,未经允许,严禁转载