### ä½ äºè§£ Java åºç¨å¼åä¸çæ³¨å ¥æ»å»åï¼ æ³¨å ¥å¼ï¼Injectï¼æ»å»æ¯ä¸ç±»é常常è§çæ»å»æ¹å¼ï¼å ¶åºæ¬ç¹å¾æ¯ç¨åºå 许æ»å»è å°ä¸å¯ä¿¡ç卿å å®¹æ³¨å ¥å°ç¨åºä¸ï¼å¹¶å°å ¶æ§è¡ï¼è¿å°±å¯è½å®å ¨æ¹åæåé¢è®¡çæ§è¡è¿ç¨ï¼äº§çæ¶æææã ä¸é¢æ¯å ç§ä¸»è¦çæ³¨å ¥å¼æ»å»éå¾ï¼åå䏿ä¾å¨ææ§è¡è½åçè¯è¨ç¹æ§ï¼é½éè¦æé²åçæ³¨å ¥æ»å»çå¯è½ã é¦å ï¼å°±æ¯æå¸¸è§ç SQL æ³¨å ¥æ»å»ãä¸ä¸ªå ¸åçåºæ¯å°±æ¯ Web ç³»ç»çç¨æ·ç»å½åè½ï¼æ ¹æ®ç¨æ·è¾å ¥çç¨æ·ååå¯ç ï¼æä»¬éè¦å»åç«¯æ°æ®åºæ ¸å®ä¿¡æ¯ã å设åºç¨é»è¾æ¯ï¼å端ç¨åºå©ç¨çé¢è¾å ¥å¨æçæç±»ä¼¼ä¸é¢ç SQLï¼ç¶å让 JDBC æ§è¡ã ``` Select * from use_info where username = âinput_usr_nameâ and password = âinput_pwdâ ``` 使¯ï¼å¦ææè¾å ¥ç input_pwd æ¯ç±»ä¼¼ä¸é¢çææ¬ï¼ ``` â or ââ=â ``` é£ä¹ï¼æ¼æ¥åºç SQL å符串就åæäºä¸é¢çæ¡ä»¶ï¼OR çåå¨å¯¼è´è¾å ¥ä»ä¹åå齿¯å¤åæ¡ä»¶çã ``` Select * from use_info where username = âinput_usr_nameâ and password = ââ or ââ = ââ ``` è¿éåªæ¯ä¸¾ä¸ªç®åçä¾åï¼å®æ¯å©ç¨äºææè¾å ¥åå¯è½è¾å ¥ä¹é´çåå·®ãä¸é¢ä¾åä¸ï¼ææç¨æ·è¾å ¥ä¸ä¸ªæ°å¼ï¼ä½å®é è¾å ¥ç忝 SQL è¯å¥ç段ãç±»ä¼¼åºæ¯å¯ä»¥å©ç¨æ³¨å ¥çä¸å SQL è¯å¥ï¼è¿è¡åç§ä¸åç®ççæ»å»ï¼çè³è¿å¯ä»¥å ä¸â;delete xxxâä¹ç±»è¯å¥ï¼å¦ææ°æ®åºæéæ§å¶ä¸åçï¼æ»å»ææå°±å¯è½æ¯ç¾é¾æ§çã 第äºï¼æä½ç³»ç»å½ä»¤æ³¨å ¥ãJava è¯è¨æä¾äºç±»ä¼¼ Runtime.exec(â¦) ç APIï¼å¯ä»¥ç¨æ¥æ§è¡ç¹å®å½ä»¤ï¼å设æä»¬æå»ºäºä¸ä¸ªåºç¨ï¼ä»¥è¾å ¥ææ¬ä½ä¸ºåæ°ï¼æ§è¡ä¸é¢çå½ä»¤ï¼ ``` ls âla input_file_name ``` 使¯å¦æç¨æ·è¾å ¥æ¯ âinput_file_name;rm ârf /*âï¼è¿å°±æå¯è½åºç°é®é¢äºãå½ç¶ï¼è¿åªæ¯ä¸ªä¸¾ä¾ï¼Java æ åç±»åºæ¬èº«è¿è¡äºé常å¤çæ¹è¿ï¼æä»¥ç±»ä¼¼è¿ç§ç¼ç¨éè¯¯ï¼æªå¿ å¯ä»¥çç宿æ»å»ï¼ä½å ¶åæ çä¸ç±»åºæ¯æ¯çå®åå¨çã 第ä¸ï¼XML æ³¨å ¥æ»å»ãJava æ ¸å¿ç±»åºæä¾äºå ¨é¢ç XML å¤çã转æ¢çåç§ APIï¼è XML èªèº«æ¯å¯ä»¥å å«å¨æå 容çï¼ä¾å¦ XPATHï¼å¦æä½¿ç¨ä¸å½ï¼å¯è½å¯¼è´è®¿é®æ¶æå 容ã è¿æç±»ä¼¼ LDAP çå è®¸å¨æå 容çåè®®ï¼é½æ¯å¯è½å©ç¨ç¹å®å½ä»¤ï¼æé æ³¨å ¥å¼æ»å»çï¼å æ¬ XSSï¼Cross-site Scriptingï¼æ»å»ï¼è½ç¶å¹¶ä¸å Java ç´æ¥ç¸å ³ï¼ä½ä¹å¯è½å¨ JSP ç卿页é¢ä¸åçã