当前位置: 首页 > news >正文

做类似淘宝一样的网站有哪些提升网页优化排名

做类似淘宝一样的网站有哪些,提升网页优化排名,整合营销案例分析,手机建筑设计appCSRF(Cross-Site Request Forgery,跨站请求伪造)是一种网络攻击方式,它利用已认证用户在受信任网站上的身份,诱使用户在不知情的情况下执行恶意操作。具体来说,攻击者通过各种方式(如发送恶意链…

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种网络攻击方式,它利用已认证用户在受信任网站上的身份,诱使用户在不知情的情况下执行恶意操作。具体来说,攻击者通过各种方式(如发送恶意链接、在第三方网站上嵌入恶意代码等)诱导用户的浏览器发送未经授权的请求到受信任的网站。这些请求会携带用户的认证信息(如Cookie、Session),从而让受信任的网站误以为是用户本人发起的合法请求。

目录

1 CSRF攻击的基本原理

2 预防CSRF攻击的方法 

3 使用CSRF令牌(Token)的具体实现

3.1 在服务器端生成CSRF令牌

3.2 在HTML表单中包含CSRF令牌

3.3 在服务器端验证CSRF令牌

3.4 解析请求体(中间件)

3.5 完整的示例代码

3.7 注意事项


1 CSRF攻击的基本原理

  • 用户登录受信任的网站:用户在受信任的网站上登录,浏览器保存了该网站的会话Cookie。
  • 用户访问恶意网站:攻击者诱导用户访问恶意网站或点击恶意链接。
  • 恶意网站发送请求:恶意网站构造一个请求,利用用户的浏览器发送到受信任的网站。由于用户已经登录,浏览器会自动附带用户的会话Cookie。
  • 受信任的网站处理请求:受信任的网站接收到请求后,看到附带的合法会话Cookie,以为这是用户发起的合法请求,从而执行相应的操作。

2 预防CSRF攻击的方法 

  • 使用CSRF令牌(Token):在每次提交表单时,服务器生成一个唯一的CSRF令牌,并将其包含在表单中。服务器在处理请求时验证令牌的有效性,确保请求来自合法的来源。
  • 验证HTTP头部:检查请求的来源(Referer或Origin头部),确保请求是从受信任的域名发出的。
  • 使用双重提交Cookie:在请求中同时包含会话Cookie和一个自定义的CSRF令牌,服务器验证这两个值是否一致。
  • 使用SameSite Cookie属性:设置Cookie的SameSite属性为Strict或Lax,限制Cookie的跨站使用,从而减少CSRF攻击的风险。

CSRF攻击的目标通常是执行用户不希望的操作,例如更改账户设置、进行交易或发送敏感数据等。因此,理解和防范CSRF攻击对于保护用户的安全至关重要。

3 使用CSRF令牌(Token)的具体实现

使用CSRF令牌(Token)是防范CSRF攻击的一种有效方法。下面是一个具体的实现步骤,假设你使用的是Node.js和Express框架,前端使用HTML和JavaScript。

3.1 在服务器端生成CSRF令牌

首先,需要在服务器端生成一个唯一的CSRF令牌,并将其存储在用户的会话中。

const express = require('express');
const session = require('express-session');
const crypto = require('crypto');const app = express();app.use(session({secret: 'your_secret_key',resave: false,saveUninitialized: true
}));// 中间件:生成CSRF令牌并存储在会话中
app.use((req, res, next) => {if (!req.session.csrfToken) {req.session.csrfToken = crypto.randomBytes(32).toString('hex');}next();
});

3.2 在HTML表单中包含CSRF令牌

在服务器端的响应中,需要将CSRF令牌包含在HTML表单中,通常以隐藏字段的形式。

app.get('/form', (req, res) => {res.send(`<form action="/submit" method="POST"><input type="hidden" name="csrfToken" value="${req.session.csrfToken}"><!-- 其他表单字段 --><button type="submit">Submit</button></form>`);
});

3.3 在服务器端验证CSRF令牌

在处理表单提交请求时,服务器需要验证提交的CSRF令牌是否有效。

app.post('/submit', (req, res) => {const { csrfToken } = req.body;if (csrfToken !== req.session.csrfToken) {return res.status(403).send('CSRF token mismatch');}// 处理表单提交res.send('Form submission successful');
});

3.4 解析请求体(中间件)

为了从POST请求中解析CSRF令牌,需要使用body-parser中间件。

const bodyParser = require('body-parser');app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

3.5 完整的示例代码

下面是完整的示例代码,将上述步骤结合起来:

const express = require('express');
const session = require('express-session');
const crypto = require('crypto');
const bodyParser = require('body-parser');const app = express();app.use(session({secret: 'your_secret_key',resave: false,saveUninitialized: true
}));app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());app.use((req, res, next) => {if (!req.session.csrfToken) {req.session.csrfToken = crypto.randomBytes(32).toString('hex');}next();
});app.get('/form', (req, res) => {res.send(`<form action="/submit" method="POST"><input type="hidden" name="csrfToken" value="${req.session.csrfToken}"><!-- 其他表单字段 --><button type="submit">Submit</button></form>`);
});app.post('/submit', (req, res) => {const { csrfToken } = req.body;if (csrfToken !== req.session.csrfToken) {return res.status(403).send('CSRF token mismatch');}// 处理表单提交res.send('Form submission successful');
});app.listen(3000, () => {console.log('Server is running on http://localhost:3000');
});

3.7 注意事项

  • CSRF令牌的生成和验证应尽量使用加密安全的随机数生成方法
  • 确保CSRF令牌的存储和传输安全,避免令牌被第三方窃取。
  • 每次会话开始时生成新的CSRF令牌,确保令牌的唯一性和不可预测性。

http://www.qdjiajiao.com/news/10522.html

相关文章:

  • web网站百度不收录吗企业如何做网站
  • 海南省旅游专业网站发展电子商务缺乏强大的专业产业资源做后盾杭州seo网络推广
  • 搜索网站做淘宝客无锡谷歌推广
  • 潮州 网站建设谷歌香港google搜索引擎入口
  • 免费教育网站建设互联网营销策略有哪些
  • 百度做一个网站多少钱网站首页模板
  • 做淘宝店铺标志的网站百度竞价推广怎么收费
  • 上海什么做网站的公司比较好什么叫网络市场营销
  • 基于jsp的网站开发开题报告百度点击优化
  • 企业网站网络推广怎么做小红书kol推广
  • 做视频剪辑接私活的网站网站发稿平台
  • 建设一个网站的文案需要百度不收录网站怎么办
  • 连接品硕网线做怎么弹网站怎么在平台上做推广
  • 王爷不可以优化英语
  • 网站统计访客数量怎么做谷歌官网入口
  • 如何破解网站后台账号和密码网站模板之家官网
  • 上海公安门户网站网址宁波seo公司推荐
  • 吉首企业自助建站seo平台代理
  • 做网站套路网络推广平台大全
  • 甘肃手机网站建设高级seo
  • 铁岭做网站的公司知乎营销推广
  • react做的网站有哪些seo推广思路
  • 厦门seo测试东莞百度seo新网站快速排名
  • 电子商务网站建设第三章答案seo入门培训学校
  • 重庆网站建设大概多少费用技术培训学校机构
  • 前端做网站直播新手如何自己做网站
  • 网架加工入门基础知识做博客的seo技巧
  • 科技类网站设计东莞网络推广代运营
  • 苏州网络推广苏州网站建设网站建设制作费用
  • 东莞网站系统哪里好常州网站seo