前端 | 杜绝xss攻击的几种方式

XSS攻击实战:Cookie窃取原理、数据外带与防御加固指南 跨站脚本攻击(XSS)是Web安全领域常见的漏洞类型,其核心原理在于攻击者能够将恶意脚本注入到受信任的网页中,并在用户浏览器中执行。这些脚本在受害者站点的同源策略下运行,从而能够访问该站点的敏感数据,例如存储在Cookie中的用户会话凭证。攻击的技术价值在于揭示了客户端脚本执行权限与数据安全之间的关键矛盾。在工程实践中,攻击者常利用Image对象、XMLHttpRequest或Fetch API等技术,将窃取的Cookie等数据外带到远程服务器,完成攻击链条。应用场景广泛,从社交论坛的留言板到电商网站的用户 阅读详情
前言

踏平坎坷成大道,斗罢艰险又出发!

与各位道友们共勉。

XSS攻击是什么?

答:跨站脚本攻击。

XSS攻击的流程?

  1. 黑客往浏览器注入恶意脚本代码。
  2. 浏览器向服务器发送正常请求+xss。
  3. 服务器返回正常页面+xss。
  4. 浏览器解析xss,发送恶意请求到恶意服务器。
  5. 恶意服务器自此可以监听数据。

如何避免?
  • 过滤用户输入:只包含白名单内的格式。
  • HTML转义:转成纯文本,从而防止浏览器解析。
  • 在一些框架例如react的项目中,尽量避免使用innerHTML。
  • 配置安全头(CSP):设置安全的脚本来源。
  • 给发送服务端的cookie标记成HttpOnly。
  • 限制使用eval, setTimeout, setInterval这种动态执行JS的函数。
KindEditor安全配置实战:五层防御体系彻底杜绝XSS攻击 跨站脚本攻击(XSS)是Web应用中最常见的安全威胁之一,攻击者通过在用户输入中注入恶意脚本,窃取Cookie、篡改页面内容或进行蠕虫传播。其原理在于浏览器无法区分页面内容中的可信代码与恶意注入的脚本。防范XSS的核心技术价值在于构建深度防御体系,确保用户生成内容的安全可控。在内容型应用如博客、CMS和论坛中,富文本编辑器是XSS攻击的主要入口。本文聚焦于广泛使用的KindEditor编辑器,通过启用filterMode并严格定制htmlTags白名单、利用afterChange钩子进行实时监控、管控pas 阅读详情

相关推荐

绿标短网址app.10086.cn/xxxxx移动短网址缩短接口网址api调用php方式解析

绿标短网址app.10086.cn/xxxxx 移动网缩短接口网址api调用php方式解析 app.10086.cn是移动网站的接口,可以制作移动网等第三方官方网站域名的任意生成接口,由于是认证企业,可以再抖音 微信 qq等第三方渠道正常打开不拦截提示,第三方网址,头条文章等,效果非常号,这里记录下api接口,纯技术php生成,具体规则可以去抖音的开放平台去申请对应接口 。这里用我php模拟抓包获取方式 GET http://www.app10086cn.cn/?i=app.10068.cnHTTP/1.1

qq_20300095的博客 5912

前端xss过滤接口返回的信息

【代码】前端xss过滤接口返回的信息。

qq_41314448的博客 623

电机控制实战:SVPWM五段式与七段式算法在STM32上的实现对比

本文深入对比了SVPWM五段式与七段式算法在STM32上的实现效果,详细分析了两种算法在占空比控制、开关损耗和波形质量等方面的差异。通过实测数据,为工程师提供了针对不同应用场景的选型建议,包括电池供电设备和高精度伺服控制系统的优化方案。

h6i7j8的博客 584

整理关于web项目如何防止CSRF和XSS攻击的方法

1 了解CSRF的定义 CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻...

lxw1844912514的博客 1139

学习记录——SIMPACK生成轨道谱文件的方法

生成轨道谱文件的方法,可以用于实测轨道谱导入和自制轨道谱导入仿真

weixin_51965897的博客 7806

echarts实现3D地图——map3D

【代码】echarts实现3D地图——map3D。

xiaoququ的博客 7324

前端安全:XSS攻击与防御策略

从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。干货主要有:①1000+CTF历届题库(主流和经典的应该都有了)②CTF技术文档(最全中文版)③项目源码(四五十个有趣且经典的练手项目及源码)

Karka_的博客 1745

应急响应-windows入侵检测分析、检测以及病毒查杀的权威性工具

2.1 病毒分析 从windows系统信息、软件、进程、内核、注册表、网络、文件、服务等各类系统信息展示并给出分析,提供给专家或安全人员分析使用工具。 1)PCHunter:http://www.xuetr.com PC Hunter是一个Windows系统信息查看软件,同时也是一个手工杀毒辅助软件。 常用进程、内核驱动、端口、内核、磁盘、卷、键盘、网络层等过滤驱动检测、注册表编辑、进程iat、eat、inline hook、patches检测和恢复、文件系统、SPI、启动项、服务、Host文件、映像

xianjie0318的博客 3894

前端应对xss进攻的一些方法

一提到前端安全性,必然要考虑到XSS攻击,那我们先来看下什么到底XSS攻击。 xss攻击:跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用...

MrLiber的博客 2923

从原理到实践:详解RGBD相机深度与彩色图像对齐(D2C)算法

本文深入解析了RGBD相机深度与彩色图像对齐(D2C)算法的原理与实现。针对自组装相机中深度图与彩色图不匹配的核心痛点,文章从相机模型、坐标系变换等数学基础讲起,剖析了传统点映射算法的缺陷,并重点介绍了高效的矩形区域映射算法。该算法通过将深度像素视为矩形区域进行映射,有效解决了空洞和遮挡问题,并附有可直接复用的C++代码与优化技巧,为三维重建、机器人视觉等应用奠定坚实基础。

weixin_28363123的博客 243

乐企增值税及附加税费(一般纳税人适用)申报表填报能力说明文档V3.009

申报表填报,是指企业在自有业务系统中将算税结果数据按预填规则要求加工汇总后,进行申报表填报的过程。申报表填报前对纳税申报所需的前提条件进行校验。校验通过后,应用前序算税结果数据及预填规则进行纳税申报表预填,生成申报表数据。申报表数据通过申报业务规则校验后,经纳税人确认即完成申报表填报业务。

记录点滴 347

前端安全:如何防止XSS攻击?

XSS攻击是一种常见但危险的漏洞,通过输入验证、输出编码、HTTP头部策略、内容安全策略以及现代框架的使用,可以有效降低XSS攻击的风险。同时,持续的安全检测和团队的安全意识提升也是保障前端安全的重要环节。

破损的天堂鸟博客 4929

Hermes 教程 05:多 Agent 编排

本文介绍了Hermes v0.13.0中的四种多Agent协作模式:1)delegate_task快速子任务模式,适合2-3个独立并行任务;2)spawn子Agent模式,实现零成本并行多步流水线;3)tmux交互子Agent模式,支持长期自主任务;4)全新Kanban看板系统,提供持久化AI团队协作框架。各模式在隔离级别、时长、工具访问和适用场景上存在差异,其中spawn模式通过独立上下文窗口实现零上下文成本。文章详细说明了每种模式的使用方法、限制条件和典型应用场景,并提供了具体代码示例和可视化流程图。K

程序猿_三产 539

XSS攻击和CSRF攻击

Cross Site Scripting,简称 XSS ,是一种代码注入攻击,攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。Cross Site Request Forgery(跨站请求伪造),通过冒充用户身份对目标攻击网站执行某些操作

2301_78107029的博客 2267

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

React 20 的 useFormState 如何防御基于原型链污染的 XSS 攻击

在前端开发的江湖里,安全问题就像是隐藏在暗处的刺客,稍有不慎就会让我们的应用“中招”。尤其是原型链污染引发的XSS攻击,更是让不少前端工程师头疼不已。而React 20带来的`useFormState`钩子,就像是一把趁手的武器,能帮我们有效抵御这类攻击。今天,咱们就来深入聊聊,`useFormState`是如何做到这一点的。

前端大白话 1243

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

xss攻击和csrf攻击

XSS攻击 参考文章 中文全称:跨站脚本攻击; 英文全称:Cross Site Scripting; 是web程序中最常见的漏洞,指的是攻击者在网页中插入客户端脚本(如:javascript),当用户在浏览该网页时,该脚本就会在用户的浏览器上运行,从而达到攻击者的目的,如:窃取用户cookie的信息。 xss攻击实现的方式 在网页中能进行输入的地方(如:输入框),输入一段脚本语言,如:javasc...

Reilyyy的博客 376

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

XSS攻击原理及预防方法

XSS攻击通常都是通过跨站指令代码攻击网站的后台漏洞。它和信息隐性代码攻击攻击的目标不同。前者是透过从Web前端输入信息至网站,导致网站输出了被恶意控制的网页内容,使得系统安全遭到破坏。而后者则是输入了足以改变系统所执行之SQL语句内容的字串,使得系统最终达到攻击的目的。但从一般角度来看,这两种攻击手法基本上是相通的。他们都是透过系统对前端输入信息检验不严谨,利用刻意制造出来的输入信息,来让系统产生不在预期内的有害行为。

PLAIDC的博客 7885

Excalidraw如何防范XSS攻击?前端安全措施详解

Excalidraw通过多层机制防范XSS攻击,包括输入清洗、结构化数据存储、React自动转义、DOMPurify过滤及严格的CSP策略。结合AI生成内容的沙箱处理,确保在开放协作中维持安全,实现功能与防护的平衡。

weixin_36483050的博客 815

前端安全问题XSS攻击

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。 xss的分类 xss的分类有,反射型、存储型、DOM型。具体就不做解释,师傅们应该也都懂,不懂的师傅百度上也很容易查

zhukehan24的博客 421

XSS(跨站脚本攻击)

实验环境:DVWA 一、XSS攻击原理 XSS又叫CSS(Cross Site Scripting),即跨站脚本攻击。XSS是指攻击者在网页中嵌入客户端脚本,通常是JavaScript编写的恶意代码,当用户使用浏览器浏览被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行。XSS利用的是用户对网站的信任。 二、XSS类型 1.反射型XSS 反射型XSS也被称为非持久型XSS,只是简单的把用户输入的数据反射给浏览器,简单来说,黑客往往需要诱导用户点击一个恶意链接才能攻击成功。 2.存储型XSS.

weixin_50698958的博客 671

PHP表单数据过滤与净化:5步杜绝XSS与SQL注入攻击

掌握PHP表单处理安全核心,5步实现数据过滤与净化,有效防御XSS与SQL注入攻击。涵盖表单验证、输入转义、过滤函数等实用方法,适用于登录注册、用户投稿等场景,提升应用安全性,值得收藏。

CodeTrick的博客 1100

实战指南|XSS攻击完整防御方案(前端+后端,零基础也能上手)

本文详细介绍了XSS攻击的防御方案,涵盖前端和后端两个层面。前端防御包括输入过滤、安全渲染和使用CSP策略;后端防御重点在于输入验证和输出转义。文章强调必须采用双重防御机制,并提供了具体的代码示例。同时总结了XSS防御的三大核心要点:前后端协同防御、最小权限原则和定期安全更新。最后为网络安全初学者提供了系统的学习路线图,从基础知识到渗透测试,帮助零基础者快速入门网络安全领域。

2301_77472496的博客 661

vue ---根据白名单过滤HTML(防止XSS攻击)

xss官网:https://jsxss.com/zh/index.html 以nodejs做测试 1.在终端引入xss,命令: npm install xss --save 2.在vue的页面进行引入 import xss from 'xss' 3.定义一个变量进行测试 首先测试一个没有进行防止xss攻击的测试 &lt;p v-html="test"&gt;&lt;/p&g...

如的博客 2万+

网页前端常见的攻击方式和预防攻击的方法

 网页前端常见的攻击方式和预防攻击的方法 转自http://www.jb51.net/web/24351.html 探讨网站前端开发的安全问题. 网站前端开发碰到的安全容易被人们忽视,因为大多人认为这些在客户端浏览器运行的代码不会造成服务器端的安全隐患,通过本文将简单阐述网站前端中经常碰到的安全问题,以及一些应对策略 随着前端技术的发展,安全问题已经从服务器悄然来

henweimei的博客 1373

如何防止XSS攻击绕过Bearer Token?

措施作用✅ Token 存 HttpOnly CookieJS 无法读取,彻底阻断 XSS 窃取✅ 短期 Access Token + 内存存储减少泄露窗口✅ 严格 CSP 策略阻止恶意脚本执行✅ 输出编码 + 安全编码习惯从源头杜绝 XSS✅ 敏感操作二次验证纵深防御🔐终极建议不要把 Bearer Token 存在 localStorage/sessionStorage!优先采用。

bsklhao的博客 915
上一篇: 代码随想录算法训练营第九天 | Javascript | 力扣Leetcode | 手撕KMP的一天 | 28. 找出字符串中第一个匹配项的下标、459. 重复的子字符串
下一篇: 代码随想录算法训练营第十天 | Javascript | 力扣Leetcode | 144、145、94. 二叉树前序,后续,中序
栗子皮皮布丁
博客等级 码龄2年 204粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值