跨站请求伪造和csrf

1. 钓鱼网站的页面和正经网站的页面对浏览器来说有什么区别? (页面是怎么来的?)
            钓鱼网站的页面是由 钓鱼网站的服务端给你返回的    
            正经网站的网页是由 正经网站的服务端给你返回的
            
        2。钓鱼网站进行csrf的过程:
            用户访问了钓鱼网站,并通过钓鱼网站给正经网站的服务端发送了请求,(例如在转账请求,钓鱼网站修改了转入账户,然后发送给了正经网站的服务端)
            正经网站的服务端未能识别出这个一个虚假的请求,而是直接进行了处理,从而转账成功
            解决方案:在正经网站加入校验字符(该字符钓鱼网站获取不了),使得正经网站的服务端能够识别是否是正经网站传来的请求

正经网站的请求页面,端口号为8000:

正经网站的服务端:

钓鱼网站仿照了正经网站的页面,并给正经网站的服务端发送了请求且篡改了转入账户:

钓鱼网站的页面,端口号为8888:

 

当钓鱼网站给正经网站的服务端发出请求时,正经网站的服务端未能辨别出这是一个虚假的网站,从而对请求进行了处理

解决方案:在正经网站加入校验字符(该字符钓鱼网站获取不了),使得正经网站的服务端能够识别是否是正经网站传来的请求
         Django中内置了一个专门处理csrf问题的中间件
            django.middleware.csrf.CsrfViewMiddleware(在setting中)
            
            这个中间件做的事情:
                1. 在render返回页面的时候,在页面中塞了一个隐藏的input标签
                
                用法:
                    我们在页面上 form表单 里面 写上 {% csrf_token %}
                    
                网页中翻译为<input type="hidden" name="csrfmiddlewaretoken" value="8gthvLKulM7pqulNl2q3u46v1oEbKG7BSwg6qsHBv4zf0zj0UcbQmpbAdijqyhfE">
                
                2. 当你提交POST数据的时候,它帮你做校验,如果校验不通过就拒绝这次请求

settings配置中:

csrf在网页中则翻译为一串字符串

此时钓鱼网站在发出请求时,则被正经网站的服务端拒绝:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章