云服务器网:购买云服务器和VPS必上的网站!

Python中的CSRF攻击与浏览器安全策略

CSRF攻击(Cross-Site Request Forgery)的原理是攻击者通过歹意网站或其他方式,向用户浏览器发送一些包括捏造的cookie或参数的要求,如果用户浏览器当前已登录了需要认证的网站,那末这些要求就会包括用户合法的认证信息,从而遭受攻击。这

csrf攻击(Cross-Site Request Forgery)的原理是攻击者通过歹意网站或其他方式,向用户浏览器发送一些包括捏造的cookie或参数的要求,如果用户浏览器当前已登录了需要认证的网站,那末这些要求就会包括用户合法的认证信息,从而遭受攻击。这类攻击可以致使各种安全问题,比如盗取用户信息、篡改数据、歹意转账等。

浏览器有一些安全策略可以避免此类攻击,其中之一就是Same Origin Policy(同源策略)。同源策略要求网页只能从同一域名下加载脚本、样式表和图象等资源,这样在浏览器中打开的一个页面只能与同源页面通讯,而不能跨域访问其他页面的数据和资源。同源策略可以在一定程度上避免CSRF攻击。

接下来我们使用Python Flask框架演示一下CSRF攻击和如何防御

首先,我们要配置一个包括CSRF token的表单,避免捏造要求:

from flask_wtf.csrf import CSRFProtect
from flask_wtf import FlaskForm
from wtforms import StringField

app = Flask(__name__)
app.secret_key = 'secret'
csrf = CSRFProtect(app)

class MyForm(FlaskForm):
    name = StringField('name')

@app.route('/form', methods=['GET', 'POST'])
def my_form():
    form = MyForm()
    if form.validate_on_submit():
        return 'Hello, ' + form.name.data
    return render_template('myform.html', form=form)

然后我们编写一个捏造网站的代码来攻击上面的表单:

from urllib.request import urlopen, Request
from urllib.parse import urlencode

url = 'http://localhost:5000/form'
data = {'name': 'pidancode.com'}
data = urlencode(data).encode('utf⑻')
req = Request(url, data, method='POST')
response = urlopen(req)
print(response.read())

运行这段代码,可以看到它向上面的表单发送了一个POST要求,但是由于CSRF token不正确,要求被谢绝了。这样我们就避免了CSRF攻击。

本文来源:https://www.yuntue.com/post/83463.html | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

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