这段时间准备复习一下前端知识,查漏补缺。不知道从哪里下手,毕竟自己在前端的领域里还只是小白,前端的知识领域可以说是浩如烟海也不过分。不过既然自己选择了这条路,那么就坚持走下去吧。加油。
第一个复习的知识点,是前端的安全问题,这个问题是在工作中敲代码经常会抛掷脑后的问题,但是面试又几乎必问的问题。
(1)xss攻击
目前俺做的这些项目里还没有受到过神马攻击,但是为了适应现代化前端的成长需求,这方面的只是还是应该具备的。
诸如:攻击者输入input框时,在里面填写“javascript:"这样的字符串,或者“<script></script>”标签之类的,发送给后台后存储到数据库,然后呢,当其他用户进来的时候,浏览器解析从服务器得来的代码,浏览器会将恶意注入的代码解析运行。产生的后果,就是会恶意执行程序影响用户体验和窃取用户数据等等。
预防的方法:
1.前端要根据业务需求进行严格的验证,比如要求email格式的input框就只能是email.
2.后台coder对于前端发送过去的数据要进行过滤和消炎之后再存入数据库。
3.与业务有关的数据,尽量不要在页面中显示,前端创建html静态页面,通过ajax调用api实现数据展示。前后端完全分离,不要用后台代码在页面上直接调取数据。
前面三条是我们平时在开发中都能做到的,所以规范的开发本身就是预防xss攻击的有效方式。
另外还有一点:
4.针对不同的业务规定,前端可以对不符合规范的字符串和特殊符号进行过滤,>>>>>>这里使用escapeHTML()方法
(2)csrf攻击
这个攻击方式也是面试中常见的一个问题。
跨域请求伪造,意思就是用户在自己想要访问的网站上,比如自己的邮箱里面,点开一个黑客发送的恶意的链接,这个链接的页面会有你点击进去之后就获取你的cookie信息的恶意代码,这几行代码其实很简单,会将你的cookie值set到页面的input中然后促发submit事件,将带有你cookie值的信息发送到攻击者哪里,攻击者就可以通过你的个人信息逃过系统验证访问B网站。
预防:
根据业务需求,在交互中强制用户输入验证码
(3)SQL注入
在用户摄入界面注入sql语句在服务器端运行,恶意攻击服务器获取用户数据。
预防:
1.设置php.ini选项display_errors = off,防止php脚本出错之后,在web页面输出敏感信息错误。
2.数据转移,
3.增加黑名单或白名单验证。
对于sql注入,这里前端要解决的是去除input的特殊字符,做好验证。然后其他的交给后台验证。至于后台的黑名单白名单验证,目前我还不是很懂,过两天看一看,然后再来补充。
(4)文件上传漏洞
恶意上传带有脚本的文件,在服务器端运行。
预防:
1.前端需要验证上传文件是否是指定的类型后缀名。
2.后台文件上传目录禁止执行脚本解析。
网友评论