Javascript是一种高级的,动态类型化的解释型第六大流行编程语言。 它与用户DOM交互以执行各种功能。
自1995年问世以来,它已经发展了很多,现在通过PhoneGap等工具也用于跨平台开发,并通过NodeJS用于服务器端开发。
曾经有过Java安全漏洞的案例
自发布以来。 甚至Facebook都不是全部
漏洞。 马克·扎克伯格(Mark Zuckerberg)自己的Facebook帐户被黑,
他事先被告知Facebook存在安全风险。 逃走
针对这些安全漏洞,专家建议采取一些措施,
应予以实施以控制风险。 JavaScript专家感觉
这些漏洞是Javascript开发人员的结果
没有采用这些措施来控制那些风险。
需要注意的重要一件事是“任何我们可以得到输入的东西
到我们的应用程序并返回到后端是一个潜在的黑客因素或
脆弱性因素”。 其中包括查询参数,URL路径,
PUT / POST参数,Cookie,引荐来源标头,文件上传,电子邮件,
表单字段,Web套接字,浏览器的本地/会话存储等。
跨站脚本(XSS)
这是应用程序中最常见的漏洞之一。 XSS发生在
运行任何恶意的,不需要的或未经授权的Javascript代码段
在受害者的浏览器中或应用程序旁边。 这可能导致
数据被盗或用户被重定向或破坏
剪贴板数据或浏览器的历史记录。 无法过滤
通过Web应用程序防火墙。
当应用程序使用数据参数并将其传递给浏览器而未正确验证数据时,就会发生XSS。
预防
验证并清除所有基于用户的输入。
对输出进行编码以包含特定内容,尤其是在输出包含HTML标记的情况下。
设置适当的标题,例如严格的传输安全性,X-frame-options,
X-XSS保护,X-Content-Type-Options,Content-Security-Policy。
跨站请求伪造(CSRF)
这被称为“ see-surf”。 它允许受害者的浏览器制作一个
伪造的HTTP请求。 它迫使最终用户不必要地执行
当前对其进行身份验证的Web应用程序上的操作。
因此,当用户认为他只是在浏览自己的仪表板时,
恶意代码段会在后台加载。 例如,可以
在页面上以及用户浏览时成为Facebook的隐藏框架
页面,并在浏览器中登录到他的Facebook帐户,
后台代码可以使他代表他发布内容。
因此,这给予了黑客许可,以迫使用户的浏览器在不知道的情况下生成请求。
预防
在请求中包含随机的,不可预测的令牌。
将令牌添加到可以改变应用程序状态的请求中。
合并验证码。 请求的来源必须经过验证。
会话管理
黑客通常使用身份验证机制中的漏洞/冒充来冒充其他用户。
预防
不要在URL中公开会话令牌。
会话令牌应该有一个超时。
每次成功登录后,重新创建会话令牌。
使用HTTPS优先发送令牌。
使用适当的权限。
使用一些众所周知的身份验证机制。
Java严格模式
尽可能使用严格模式。
这样可以消除无声错误,并始终显示它们。
它有助于Javascript引擎对代码进行优化。
敏感数据暴露
使用SSL / TLS(HTTPS)。
对静态和传输中的所有敏感数据进行加密。
不要存储不必要的数据。
在存储敏感数据的表单上禁用缓存。
密码管理
使用强大的算法对密码进行哈希处理。
加强密码。
使用2因子身份验证。
使用Google身份验证器。
处理饼干
对于Cookie,请设置以下标志:
安全:仅用于HTTPS。
不允许通过Javascript访问cookie。
强制进行适当的Cookie范围界定。
仅由某些域访问。
仅在某些路径上可访问。
在规定的时间后过期。
本文包含一些摘录自标题为“演讲”的部分
Jared Smith的“如何编写安全的JavaScript应用程序”活动
“ 2016年11月”
From: https://hackernoon.com/javascript-development-and-security-va2bm2gbi