EL表达式,#{}和${}区别(是否防止sql注入)

#相当于对数据 加上 双引号,$相当于直接显示数据

#可以有效的防止SQL注入 会加上“” 之后写进sql中
$不能防止SQL注入 因为会直接写进sql语句中

  1. 使用#时:
    用#来传递参数时,sql在解析的时候会加上“”,当成字符段来解析。例如id=“12”。所有很大程度上防止sql注入。
  2. 使用$时:
    $传入数据直接显示在生成的sql中,如上面的语句id=${12}直接解析为id=12,执行时会报错。
    能用#尽量用#。

#{} 用于CRUD(增删改查)语句,${} 则用于模糊查询(记得加%%哦)
sql注入:恶意攻击,通过sql语句在登陆界面等,违法登陆。

补充:

1. 什么是sql注入?

恶意修改(增加)sql语句
实战举例
用户在输入框中输入的字符串中加入 SQL 语句。
如果在设计不良的程序中忽略了检查,那么这些注入进去的 SQL 语句就会被数据库服务器误认为是正常的 SQL 语句而运行,攻击者就可以执行计划外的命令或访问未被授权的数据。

2. 什么时候必须用$符号

既然知道了使用#是为了防止sql注入,那必须使用$符号就意味着必须sql注入(不让sql注入反而出错),也就是说,${}替代的是不需要预编译成字符串的数据,如表名、关键字的时候。
举例:
select * from ${tablename} where id = #{id} 此时入参中的 tablename 就不能使用#符号来处理

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值