XSS和CSRF

XSS 跨站脚本攻击

使用innerHTML时容易发生这样的问题

比如发布一条评论到A页面,评论内容是

<script>alert(1)</script>

如果没有过滤就直接插入到页面,那么其他用户访问A页面时,看到这条评论时就会弹出提示框
解决方法:
客户端和服务端要过滤特殊字符,比如’<>‘变成html的实体字符

CSRF 跨站请求伪造

冒充用户之手

可以利用XSS实现CSRF,但不是唯一方法
比如:

http://example.com/bbs/create_post.php?title=标题&content=内容

是个发帖的api
如果我在A页面发布一个连接

http://example.com/bbs/create_post.php?title=我是脑残&content=哈哈

那么任何访问A页面并且点击了该页面的用户就会发布一个帖子
解决方法:
1.创建资源不用get方法,使用post方法
2.请求令牌
首先服务器端要以某种策略生成随机字符串,作为令牌(token), 保存在 Session 里。然后在发出请求的页面,把该令牌以隐藏域一类的形式,与其他信息一并发出。在接收请求的页面,把接收到的信息中的令牌与 Session 中的令牌比较,只有一致的时候才处理请求,否则返回 HTTP 403 拒绝请求或者要求用户重新登陆验证身份。

发表评论

电子邮件地址不会被公开。 必填项已用*标注