快捷搜索: 王者荣耀 脱发

除了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(跨站请求伪造)

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

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

经验分享 程序员 微信小程序 职场和发展