是否有SQL注入

微笑浅浅 2011-03-15 10:12:30
页面上用户输入邮箱,通过js验证:var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
然后把通过验证的邮箱插入数据库,请问这样会发生sql注入么?
我看了一下这个邮箱验证匹配的模式中不可能出现那些注入的特殊字符,但是是否有二进制什么的?
请大侠指点迷津。
...全文
176 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
微笑浅浅 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 bao110908 的回复:]
引用 2 楼 iss0131 的回复:

String sql = "insert into "+schema+".test(name,age,email,date)"+" values(?,?,?,CURRENT TIMESTAMP)";

这是我的sql语句。
其中的第三个字段是从页面获取的。


这些数据插入哪张表也是变化的?
[/Quote]
嘿嘿,我指的是那个email字段,schema字段是不变的
xf_taoran 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kebin0001 的回复:]
SQL注入與檢驗無關,關鍵在於你是不是用字串相加的方式組成SQL。
[/Quote]
+
feeses 2011-03-15
  • 打赏
  • 举报
回复
使用参数化就不会发生注入问题,不该判断字符串来处理。
ChDw 2011-03-15
  • 打赏
  • 举报
回复
你那个只是前端验证,你服务器并没有再验证的话,就存在问题。
woshijulinhou 2011-03-15
  • 打赏
  • 举报
回复
sql预编译是不会有sql注入问题存在的,你多虑了
树成 2011-03-15
  • 打赏
  • 举报
回复
在服务器端验证一下即可,或者替换掉sql关键字或者单引号之类的特殊符号。
qingyuan18 2011-03-15
  • 打赏
  • 举报
回复
网页安全性?Sql注入是个问题
酒剑仙 2011-03-15
  • 打赏
  • 举报
回复
关键看你schema 这个字段从哪里传入
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 iss0131 的回复:]

String sql = "insert into "+schema+".test(name,age,email,date)"+" values(?,?,?,CURRENT TIMESTAMP)";

这是我的sql语句。
其中的第三个字段是从页面获取的。
[/Quote]

这些数据插入哪张表也是变化的?
d19901217 2011-03-15
  • 打赏
  • 举报
回复
后台再过滤啊
hepeng_8 2011-03-15
  • 打赏
  • 举报
回复
裂解制
ise_Keven1 2011-03-15
  • 打赏
  • 举报
回复
可以参考下这篇文章:如何防止sql 注入
ise_Keven1 2011-03-15
  • 打赏
  • 举报
回复
可以参考下这篇文章:http://www.5kuaile.net/what-is-sql-injection-how-to-prevent-sql-injection/
Coolfatman 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 iss0131 的回复:]

String sql = "insert into "+schema+".test(name,age,email,date)"+" values(?,?,?,CURRENT TIMESTAMP)";

这是我的sql语句。
其中的第三个字段是从页面获取的。
[/Quote]
这种采用sql预编译的是不会有sql注入问题的。
soli11722984 2011-03-15
  • 打赏
  • 举报
回复
我浏览器关闭JS,你JS乍做验证?
kai27ks 2011-03-15
  • 打赏
  • 举报
回复
2楼说的有道理。关键就在于你的SQL是否是使用 String +String 的方式。 建议使用占位符"select * from xxx where name =?"和PreparStament.setString(1,"小明")这样的方法可以避免。
微笑浅浅 2011-03-15
  • 打赏
  • 举报
回复
String sql = "insert into "+schema+".test(name,age,email,date)"+" values(?,?,?,CURRENT TIMESTAMP)";

这是我的sql语句。
其中的第三个字段是从页面获取的。
kebin0001 2011-03-15
  • 打赏
  • 举报
回复
SQL注入與檢驗無關,關鍵在於你是不是用字串相加的方式組成SQL。
DBMS_TTT 2011-03-15
  • 打赏
  • 举报
回复
XUEXI
ituuz 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 bao110908 的回复:]

引用 18 楼 iss0131 的回复:
嘿嘿,我指的是那个email字段,schema字段是不变的


如果 schema 字段的值是由用户产生的,那么就存在 SQL 注入的风险。否则的话你这个 SQL 不会有注入风险。
[/Quote]
楼上好眼熟
加载更多回复(5)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧