以登录为例,假如登录语句是
String sql="select count(user.id) from sys_user user where user.user_name='?' and user_pwd = '?' "
,如果参数 user_name 和usre_pwd没有经过加密处理
当user_name为 英文的 ' 则会报sql错误,“引号内的字符串没有正确结束”等等。这样的错误如果给前台捕捉了,那么你的sys_user表就管不住了,当参数user_name or user_pwd 为 ' or 1=1 -- 时 ,拼成的sql语恒成立,像这样的情况就是一种比较简单的注入攻击行为,所 以最好把前台的参数,转换为一种数据库用不到的符号或者字符串(不是相关符号或关键字),比如,将英文的符号转成中文。 |