关于跨站脚本攻击xss、跨域攻击crsf、sql注入
跨站脚本攻击
跨站脚本攻击是指恶意用户向网站提交非法的内容,这些内容比如说是一些特殊字符,反正能达到黑客目的字符。
发生场景:
1、在评论里写上alert('alert at comment '),或者是其它能非法操作的字符。
2、或者是可以在内容里面包含恶意的接口,如果用户已经登录,调用此接口则会形成crsf(跨域攻击)。
避免措施:
1、可以转义用户提交的特殊字符。
2、网页解析的时候做特殊处理。
跨域攻击
跨域攻击是指黑客在自己不知情的情况下并且在登录状态执行了黑客的请求。
发生场景:
恶意用户,在自己的网站中携带调用正常网站的接口,但是调用接口后面的参数是恶意参数,这样用户打开后如果是需要登录后才能执行的接口,这时候就不需要登录了,会直接执行恶意者的接口。
避免措施:
1、设置服务端禁止跨域请求,
2、用户的登录凭证放在接口后面,比如携带token参数
3、判断referer中的来源host为合法的host,但是referer可能会被篡改
4、验证码的方式,类似于携带token参数
5、在Set-Cookie里增加 SameSite 属性
sql注入攻击
sql注入是指恶意者通过表单或其它途径提交特殊的sql语句,来执行预期的恶意sql。
发生场景:
最典型的就是网站登录,一般的网站登录是通过用户名密码来登录,sql大概是:
select * from user where username = 'hai' and password = 'xia'
这时候,如果sql不是预编译(预编译是指使用?号做占位符,参数只能一个萝卜一个坑)的,而是组装的sql,就会被恶意组装,比如上面的username 与password 参数我可以传入 hai or 1=1,然后就形成了
select * from user where username = 'hai or 1=1' and password = 'xia',然后后面的password我随便写都可以登录进去,因为or后面的成立就可以了,这样就达到了攻击的目的。
避免措施:
1、sql执行做预编译处理
2、过滤危险恶意的参数请求
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)