python-Django里CSRF 对应策略

CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的×××方式。

    我的理解是,比如你访问过招商银行的网站并登陆之后,你的cookie信息暂时不会失效,

    这时,×××通过各种方式诱导你访问他给你提供的网站等链接,让你在同一浏览器访问

    ×××给你的网站时,那么他给你提供的网站里面有直接有向招商银行提交转账信息的请求,这时,

    这个转账请求会借用你刚刚登陆过招商银行的cookie信息,来使用的你的身份进行合法的转账。


那么为了减少这个情况的发生,在客户端与服务端交互的时候,当客户端浏览器第一次访问cookie的时候,服务端会有基于csrf的随机验证字符串生成,然后把这些字符串写到客户端cookie里,同时服务端在session里保存一份,当客户端浏览器再次发来post请求的时候,服务端会验证cookie里csrf_token(就是生成的这个随机字符串)。

Django里自动帮我们封装了这个功能,在Django项目里的setting.py文件里会默认开启'django.middleware.csrf.Csr这一项功能。


所以我们html文件里有post请求的时候要在from表单里添加{% csrf_token %}这一项

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <form action="/app01/login/" method="post">
 {% csrf_token %}
            <input type="text" name="username">
            <input type="password" name="pwd">
            <input type="submit" value="提交">
        </form>
    </div>
</body>
</html>


猜你喜欢

转载自blog.51cto.com/song1230/2176498