当前位置: 首页 > Web前端 > HTML

前端面试题(5)(安全、性能优化)

时间:2023-04-03 01:11:05 HTML

1.说说你知道的web安全常见的攻击方式和防护措施:SQL注入、XSS(CrossSiteScript)、跨站脚本攻击、CSRF(CrossSiteScript)SiteRequestForgery)、跨站伪造请求(1)XSSxss:跨站脚本(CrossSiteScripting)是攻击WEB网站最常见、最基本的方法。攻击者注入非法的html标签或javascript代码,从而在用户浏览网页时控制用户的浏览器。(一)类(三)DOMxss:DOM是文本对象模型,使用DOM可以让程序和脚本动态地访问和更新文档的内容、结构和样式。此方法不需要服务器直接参与解析响应。XSS是由浏览器端DOM解析触发的,可以认为是客户端的事情。反射型XSS:反射型XSS又称非持久型XSS,是最常见的XSS漏洞类型。当发出请求时,XSS代码出现在URL中,最后将输入提交给服务器。服务器解析后,在响应内容中出现这段XSS代码,最后由浏览器解析执行。存储型XSS存储型XSS,也称为持久型XSS,是最危险的跨站点脚本类型。与反射型XSS、DOM型XSS相比,隐蔽性更高,危害更大,不需要用户手动触发。当攻击者提交一段XSS代码时,它会被服务器接收并存储。当所有浏览器访问某个页面时,都会受到XSS攻击。最典型的例子就是留言板。(2)Xss危害利用虚假输入表单骗取用户个人信息。该脚本用于窃取用户的cookie值,受害者在不知情的情况下帮助攻击者发送恶意请求。(3)抵御Xss危害httpOnly:在cookie中设置HttpOnly属性,使js脚本无法读取cookie信息。前端负责输入检查,后端做同样的过滤检查。在某些情况下,无法严格过滤用户数据时,需要转换标签(2)CSRF跨站请求伪造(Cross-SiteRequestForgeries),冒充用户发起请求(在用户不知情的情况下),完成一些违背用户意愿的事情(如修改用户信息、删除初始评论等)。1.潜在危害:利用经过认证的用户权限更新设置信息等;使用经过身份验证的用户权限购买商品;使用经过身份验证的用户权限在留言板上发表评论。2.防御:验证码;强制用户与应用程序交互以完成最终请求。尽量使用post,限制使用get;get太容易被用于csrf攻击;请求来源有限,这种方式成本最低,但不能保证100%有效,因为服务端不一定能拿到Referer,版本低的浏览器存在伪造Referer的风险。令牌验证CSRF防御机制被认为是最合适的解决方案。token的使用原理:第一步:后端随机生成一个token,并将token保存在session状态;同时,后台将token传递给前台页面;第二步:前端页面提交请求时,将token添加到请求数据或header信息中一起发送给后端;后端验证前端发送的token是否与session一致,一致则合法,否则为非法请求。2.说说你知道的前端性能优化?减少对内容的HTTP请求:合并文件、CSS精灵和内联图像减少DNS查询:在DNS查询完成之前,浏览器无法从该主机下载任何文件。方法:DNS缓存,将资源分配给恰到好处的主机名数量,平衡并行下载和DNS查找避免重定向:冗余的中间访问使Ajax可缓存的非必要组件延迟加载未来所需的组件预加载减少DOM元素的数量划分资源将它们放入不同域:浏览器可以同时从一个域下载资源。增加域可以增加并行下载量并减少iframe的数量。不要使用CDN在服务器端添加Expires或Cache-Control响应标头。对组件使用Gzip压缩。配置ETagFlushBufferEarlyAjax使用GET方式请求避免img标签空srcCookie切面减小cookie大小导入资源域名不包含cookiescss切面页面顶部放置样式表不使用CSS表达式不使用IE的FilterJavascript切面将脚本放在页面底部从外部导入javascript和css并压缩javascript和css删除不需要的脚本减少DOM访问合理设计事件监听器图片优化:根据实际颜色需要选择颜色深度,压缩优化csssprites不拉伸HTML中的图片以确保网站图标。ico小,可以缓存(3)你用过哪些前端性能优化方法?减少http请求次数:CSSSprites、JS、CSS源码压缩,适当控制图片大小;网页Gzip、CDN托管、数据缓存、图片服务器。前端模板JS+data减少了HTML标签带来的带宽浪费。前端使用变量来保存AJAX请求的结果。每次操作一个局部变量,不需要请求,减少请求次数。使用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。当需要设置的样式较多时,设置className而不是直接操作样式,少用全局变量,缓存DOM节点搜索结果。减少IO读取操作避免使用CSSExpression(css表达式),也称为动态属性(dynamicproperties)图片预加载,样式表放在最上面,脚本放在最下面,加上时间戳,避免在main中使用表格页面的布局,table里面的内容全部下载完才会显示,显示比div+css布局慢(4)前端需要注意哪个SEO合理的title,description,关键词:这三项的搜索权重逐一降低;title强调重点就够了。重要关键词出现次数不超过2次,放在最前面。不同页面的标题应该不同;;keywords列出了重要的关键字,可以是符合W3C规范的语义HTML代码:语义代码让搜索引擎更容易理解网页的重要内容HTML代码放在前面:搜索引擎从上到下抓取HTML,一些Search引擎对爬取的长度有限制,保证抓取到重要内容不要用js输出重要内容:爬虫不会执行js获取内容少用iframe:搜索引擎不会抓取iframe中的内容非装饰性图片必须加alt才能提高网站速度:网站速度是搜索引擎排名的重要指标(5)如何做SEO优化?标题和关键字设置有吸引力和现实的标题,标题应该包含你制作的关键字最好不要超过三层,每一层都有“面包屑导航”,让网站以树状结构分布,页面元素标有“Alt”,使搜索引擎更友好地收录网站内容。每个月每天定期更新网站内容会让搜索引擎更喜欢友情链接。对方必须是正规网站。由专业的团队或个人每天维护和更新内链的排列,使网站形成蜘蛛网状结构,不会有单独的连接页面或链接流量分析。统计工具(BaiduStatistics,CNZZ)分析流量来源,指导下一步SEO前段时间前端面试JavaScript深入探索过往经典——页面完成从输入URL到加载展示的过程每天,一个一点点积累+一点点成长===喜欢就留个赞~持续更新~欢迎关注,一起探索前端之旅