web安全问题总结
主要问题
- SQL注入:即经过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,从而获取不应获取的数据
- 跨站脚本攻击(也称为XSS):指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通信软件、甚至在阅读电子邮件时,一般会点击其中的连接。连接里能够获取网站的cookie并提交给攻击者网站,攻击者利用cookie就可以盗取用户信息。例如: 用户发表了评论
alert(1)
,并不加处理的存储到服务器数据库,这样,当其余用户访问对应页面时,会自动在页面弹出弹窗1;
- 跨站请求伪造(CSRF/XSRF): 用户在登陆工商银行网页的同时,同时打开了另外一个不安全页面,里面有一行html代码
<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">
【假的】去执行工商银行转帐操做,用户在打开不安全页面的同时会自动执行转帐操做,而用户自己并不知情。CSRF能成功是由于同一个浏览器会共享Cookies。
措施
- 使用https协议而不是http协议;
- 不要在客户端代码、cookie,localStorage,sessionStorage中存放敏感数据,cookie设置成httponly,不容许经过JavaScript访问cookie
- 在中间件或者前置nginx设置HTTP安全头部,好比
Strict-Transport-Security
,X-Frame-Options
,X-XSS-Protection
,X-Content-Type-Options
,Content-Security-Policy
等;
- SQL注入: 尽量使用sequelize方法去查询数据库,少使用sequelize.query,若是必须写,对于sql语句参数化查询或预处理,对用户的输入内容进行转义;
- 不用eval;
- 使用非root用户启动应用程序;
- 限制同一个用户在规定时间内访问网站接口的次数,好比一秒一次;
- 限制密码输入错误次数;
- 对于一些重要敏感操做时服务端要检查Referer字段,同时在敏感操做多进行几回数据交互完成,而不是一次请求完成,也能够有效避免CSRF
欢迎关注本站公众号,获取更多信息