除了sql注入还有哪些常见的网络攻击?

引入主题
上一次面试一家公司的安全部门,基础问完之后问到了你了解过哪些网络安全攻击?

作为一个大三的学生,也就是在开发的时候听人说到过sql注入,也简单了解了一下,至于xss更是只知其名,平时忽略了网络安全方面的了解。总结一下比较常见的三种网络攻击方式。

SQL注入

将SQL语句插入到web表单中或URL中,来让服务器执行恶意SQL语句。

解决方法是,使用参数化的SQL,不要使用拼装SQL;可以通过正则表达式对用户的输入进行校验;可以将单引号和双横杠(注释符)进行转换。建议使用#{},而不是${}。

#{}和${}的区别?

#{}是预编译处理,$ {}是字符串替换。mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;mybatis在处理 $ { } 时,就是把 ${ } 替换成变量的值。使用 #{} 可以有效的防止SQL注入,提高系统安全性。

#{parm}传入的数据都当成一个字符串,会对自动传入的数据加一个双引号,避免被当成sql一部分,被sql注入。

${param}传递的参数会被当成sql语句中的一部分

XSS(跨站脚本攻击)

client那边输入了一些奇怪的js代码,被注入到html里面,产生例如盗取用户cookie信息的效果。

解决方法是,将用户提交的<和>转义成&lt,&gt。开启cookie的HttpOnly属性。

CSRF(跨站请求伪造)

盗用合法的用户名义来完成操作,让服务器无法辨别。

例如我登录了一个金融网站,进行一笔支付,服务器验证Cookie,这个操作是合法的。但是黑客通过广告引诱等形式引导我进去某个网站,加载这个网站的时候就会产生一个向黑客支付的请求,因为此时还带着自己的cookie,服务器辨别不出。这样,攻击者就通过我的身份来执行转账操作。

解决方法是,提交请求时携带Token,每次都是一个合法的随机数,并保证它的私密性;判断HTTP头的Referer字段,来确定这个请求是不是对应网页发出的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值