新网站怎么做才能可以在百度上搜索到网站托管网站建设竞价托管

张小明 2026/1/10 15:26:15
新网站怎么做才能可以在百度上搜索到,网站托管网站建设竞价托管,gofair做网站,WordPress如何设置邮箱验证一、前置认知#xff1a;为什么前端需要安全与监控#xff1f;前一篇我们完成了项目的工程化优化与部署#xff0c;实现了“上线可用”的目标#xff0c;但职场中优秀的前端项目不仅要“能用”#xff0c;更要“安全可靠”。想象以下场景#xff1a;用户登录时密码被窃取…一、前置认知为什么前端需要安全与监控前一篇我们完成了项目的工程化优化与部署实现了“上线可用”的目标但职场中优秀的前端项目不仅要“能用”更要“安全可靠”。想象以下场景用户登录时密码被窃取、页面在部分手机上频繁崩溃、支付环节出现数据篡改——这些问题会直接导致用户流失、资金损失甚至法律风险。前端安全与监控的核心价值在于以“系统稳定性”和“用户数据安全”为核心通过技术手段防范安全风险、实时追踪性能问题提前发现并解决隐患。这是前端开发者从“中级”向“高级”进阶的关键能力也是企业保障业务连续性的核心诉求。职场警示据OWASP开放Web应用安全项目统计70%以上的Web安全漏洞与前端相关而百度统计显示未做性能监控的项目线上问题平均解决时间超过4小时远高于有监控项目的30分钟。二、Day31前端安全——筑牢用户数据的“防火墙”前端安全并非“后端的事”前端直接与用户交互是抵御攻击的第一道防线。职场中高频出现的前端安全风险主要包括XSS、CSRF、敏感数据泄露、点击劫持等以下针对每类风险提供“识别-防范-实战”的完整方案。1. 最频发风险XSS跨站脚本攻击XSS攻击是指攻击者通过注入恶意脚本如JavaScript、HTML到页面中当用户访问页面时恶意脚本被执行从而实现窃取Cookie、伪造操作、弹出广告等恶意行为。根据注入方式不同分为存储型、反射型、DOM型三类。风险识别与危害存储型XSS恶意脚本被存储到服务器如评论区、用户资料所有访问该页面的用户都会触发危害范围最广如某论坛被注入脚本窃取所有登录用户Cookie反射型XSS恶意脚本通过URL参数注入如http://example.com/search?keyscript窃取Cookie/script仅当用户点击恶意链接时触发DOM型XSS通过修改页面DOM结构触发如利用document.write、innerHTML插入恶意脚本属于前端自身漏洞。实战1XSS攻击防范方案XSS防范的核心是“不让恶意脚本被解析执行”结合Vue项目特性具体实现如下// 1. 核心防范输入输出过滤Vue已默认做基础过滤 // Vue模板渲染时会自动转义特殊字符→lt;、→gt;等避免脚本执行 // 错误示例直接使用v-html渲染未过滤的用户输入风险 // div v-htmluserComment/div // 正确示例如需使用v-html先通过DOMPurify过滤恶意脚本 import DOMPurify from dompurify; // 安装npm i dompurify -S // 组件中使用 const safeComment computed(() { // 过滤用户输入的恶意脚本 return DOMPurify.sanitize(userComment.value); }); // 模板中使用过滤后的数据 // div v-htmlsafeComment/div // 2. 前端输入校验限制输入格式 const validateComment (value) { // 禁止输入script、iframe等危险标签 const dangerousTag /(script|iframe|svg|on\w)/gi; if (dangerousTag.test(value)) { alert(输入包含危险内容请修改); return false; } return true; }; // 3. 后端协同设置Content-Security-PolicyCSP响应头 // 前端可通过meta标签辅助设置建议后端统一配置优先级更高 // meta http-equivContent-Security-Policy contentdefault-src self; script-src self https://cdn.jsdelivr.net; // 含义仅允许加载自身域名的资源脚本仅允许自身和jsdelivr的资源 // 4. 敏感Cookie设置HttpOnly和Secure // 前端无法直接设置需后端配合如Node.js示例 // res.cookie(token, token, { // httpOnly: true, // 禁止前端通过document.cookie获取防XSS窃取 // secure: process.env.NODE_ENV production, // 仅HTTPS环境传输 // sameSite: strict // 防CSRF辅助配置 // });2. 跨站请求伪造CSRFCSRF攻击是指攻击者利用用户已登录的身份诱导用户点击恶意链接或访问恶意页面以用户名义发起非法请求如转账、修改密码。其核心是“利用用户的登录状态伪造合法请求”。实战2CSRF攻击防范方案// 1. 核心方案请求携带CSRF Token前后端协同 // 步骤1前端从后端获取CSRF Token如通过接口返回或页面meta标签 // 后端在页面渲染时注入meta标签 // meta namecsrf-token content随机生成的Token值 // 步骤2前端获取Token并添加到请求头 import axios from axios; // 创建axios实例 const service axios.create({ baseURL: import.meta.env.VITE_API_BASE_URL }); // 请求拦截器添加CSRF Token到请求头 service.interceptors.request.use(config { // 从meta标签获取Token const csrfToken document.querySelector(meta[namecsrf-token])?.content; if (csrfToken) { // 自定义请求头需后端认可该头信息 config.headers[X-CSRF-Token] csrfToken; } return config; }); // 2. 利用SameSite Cookie属性 // 后端设置Cookie时添加sameSite: strict或lax如前面Cookie配置示例 // strict仅允许同一站点的请求携带Cookie // lax允许部分跨站请求如GET请求兼容性更好 // 3. 验证请求来源Referer/Origin // 后端校验通过请求头的Referer或Origin判断请求是否来自合法域名 // 前端无需额外操作后端配置即可如Nginx配置 // if ($invalid_referer) { return 403; } // 4. 重要操作二次验证 // 涉及支付、修改密码等敏感操作时添加短信验证码、密码再次确认等环节 const handlePay async () { // 二次确认密码 const confirmPwd prompt(请输入支付密码确认操作); if (!confirmPwd) return; // 校验密码后发起请求 const res await payApi({ amount, confirmPwd }); };3. 其他高频安全风险防范风险类型危害实战防范方案敏感数据泄露用户密码、手机号等信息被窃取1. 前端传输前加密如AES加密手机号2. 禁止控制台打印敏感数据3. 接口使用HTTPS传输点击劫持攻击者用透明iframe嵌套合法页面诱导用户点击恶意按钮1. 前端添加X-Frame-Options响应头X-Frame-Options: DENY2. 页面添加防嵌套脚本判断top ! self时跳转URL参数泄露订单号、用户ID等敏感信息暴露在URL中如/order?orderId1234561. 敏感参数用POST请求传递2. 必要时对参数进行加密如Base64密钥3. 禁止URL存储密码等核心信息三、Day32性能监控——实时追踪系统“健康状态”性能优化并非“一劳永逸”线上环境复杂不同设备、网络、浏览器会出现开发环境无法复现的性能问题。性能监控的核心是“量化性能指标、实时捕获异常、定位问题根源”职场中常用的监控方案分为“前端埋点”和“专业工具集成”两类。1. 核心性能指标需要监控什么根据Web Vitals谷歌提出的核心Web指标和职场实际需求需重点监控以下指标LCP最大内容绘制衡量首屏加载速度目标≤2.5秒反映用户“页面是否加载完成”的第一感知FID首次输入延迟衡量交互响应速度目标≤100毫秒反映用户“点击按钮是否卡顿”CLS累积布局偏移衡量页面稳定性目标≤0.1反映用户“页面元素是否突然跳动”异常监控JavaScript错误、接口请求错误、资源加载错误反映“系统是否崩溃”自定义指标如“接口平均响应时间”“页面完全加载时间”“按钮点击转化率”结合业务需求。2. 实战3自定义埋点监控轻量场景对于小型项目或特定业务场景可通过自定义埋点实现核心指标监控无需接入复杂工具。// src/utils/monitor.js自定义监控工具 import axios from axios; // 监控数据上报接口后端提供 const MONITOR_UPLOAD_URL /api/monitor/upload; // 1. 核心性能指标监控基于Performance API export const monitorPerformance () { // 页面加载完成后获取性能数据 window.addEventListener(load, () { // 延迟获取确保数据完整 setTimeout(() { const perfData performance.getEntriesByType(navigation)[0]; // 提取关键指标 const performanceData { type: performance, lcp: 0, // 后续单独计算LCP fcp: perfData.domContentLoadedEventEnd - perfData.startTime, // 首次内容绘制 loadTime: perfData.loadEventEnd - perfData.startTime, // 页面完全加载时间 ttfb: perfData.responseStart - perfData.startTime, // 首字节时间反映后端响应速度 pageUrl: window.location.href, timestamp: Date.now() }; // 计算LCP最大内容绘制 new PerformanceObserver((entryList) { const entries entryList.getEntries(); const lcpEntry entries[entries.length - 1]; // 最后一个条目为最大内容 performanceData.lcp lcpEntry.startTime - perfData.startTime; // 上报性能数据 uploadMonitorData(performanceData); }).observe({ type: largest-contentful-paint, buffered: true }); }, 1000); }); }; // 2. 异常监控JS错误、接口错误、资源错误 export const monitorError () { // 监控JS运行时错误 window.addEventListener(error, (event) { // 过滤资源加载错误如图片、CSS加载失败 if (event.target instanceof HTMLElement) { return; } const errorData { type: jsError, message: event.message, filename: event.filename, line: event.lineno, column: event.colno, pageUrl: window.location.href, timestamp: Date.now() }; uploadMonitorData(errorData); }, true); // 监控未捕获的Promise错误如async/await错误 window.addEventListener(unhandledrejection, (event) { const errorData { type: promiseError, message: event.reason?.message || Promise错误, pageUrl: window.location.href, timestamp: Date.now() }; uploadMonitorData(errorData); }); // 监控接口请求错误基于axios拦截器 export const setupAxiosMonitor (axiosInstance) { // 请求拦截器记录请求开始时间 axiosInstance.interceptors.request.use(config { config.__startTime Date.now(); return config; }); // 响应拦截器记录请求结束时间并监控错误 axiosInstance.interceptors.response.use( (response) { // 上报请求性能数据 const requestData { type: request, url: response.config.url, method: response.config.method, status: response.status, duration: Date.now() - response.config.__startTime, // 请求耗时 pageUrl: window.location.href, timestamp: Date.now() }; uploadMonitorData(requestData); return response; }, (error) { // 上报请求错误数据 const errorData { type: requestError, url: error.config?.url || , method: error.config?.method || , status: error.response?.status || 500, message: error.message, pageUrl: window.location.href, timestamp: Date.now() }; uploadMonitorData(errorData); return Promise.reject(error); } ); }; }; // 3. 自定义业务埋点如按钮点击、页面跳转 export const trackEvent (eventName, eventData {}) { const trackData { type: business, eventName, // 事件名称如login_click、order_submit eventData: JSON.stringify(eventData), // 事件附加数据如用户ID、订单号 pageUrl: window.location.href, timestamp: Date.now() }; uploadMonitorData(trackData); }; // 4. 监控数据上报批量防抖减少性能影响 let monitorQueue []; let uploadTimer null; const uploadMonitorData (data) { // 添加设备信息 data.device { userAgent: navigator.userAgent, screen: ${window.screen.width}x${window.screen.height} }; // 加入队列 monitorQueue.push(data); // 防抖上报3秒内批量上报 clearTimeout(uploadTimer); uploadTimer setTimeout(() { // 上报队列数据 axios.post(MONITOR_UPLOAD_URL, { data: monitorQueue, appId: import.meta.env.VITE_APP_ID // 项目唯一标识 }).catch(err { console.error(监控数据上报失败, err); // 上报失败可存入localStorage下次重试 const failData JSON.parse(localStorage.getItem(monitorFailData) || []); localStorage.setItem(monitorFailData, JSON.stringify([...failData, ...monitorQueue])); }); // 清空队列 monitorQueue []; }, 3000); }; // 5. 初始化监控 export const initMonitor (axiosInstance) { monitorPerformance(); monitorError(); setupAxiosMonitor(axiosInstance); // 重试失败的监控数据 retryFailMonitorData(); }; // 重试失败的监控数据 const retryFailMonitorData () { const failData JSON.parse(localStorage.getItem(monitorFailData) || []); if (failData.length 0) return; axios.post(MONITOR_UPLOAD_URL, { data: failData }) .then(() { localStorage.removeItem(monitorFailData); }) .catch(err { console.error(重试上报失败, err); }); };在Vue项目中使用自定义监控// src/main.js import { createApp } from vue; import App from ./App.vue; import axios from ./api/request; // 项目的axios实例 import { initMonitor, trackEvent } from ./utils/monitor; const app createApp(App); // 初始化监控 initMonitor(axios); // 全局注册业务埋点方法组件中可通过this.$trackEvent调用 app.config.globalProperties.$trackEvent trackEvent; app.mount(#app);template button clickhandleLogin stylepadding: 8px 16px; background: #42b983; color: #fff; border: none; border-radius: 4px; 登录 /button /template script setup import { getCurrentInstance } from vue; // 获取全局埋点方法 const { proxy } getCurrentInstance(); const handleLogin async () { try { await loginApi(formData.value); // 登录成功后上报业务埋点 proxy.$trackEvent(login_success, { userId: 12345, // 实际从Pinia中获取 loginType: password // 登录方式密码/短信 }); } catch (err) { // 登录失败上报 proxy.$trackEvent(login_fail, { reason: err.message, username: formData.value.username }); } }; /script3. 实战4专业工具集成企业级场景对于中大型项目自定义埋点难以覆盖复杂场景需集成专业监控工具如Sentry、阿里云ARMS、百度统计实现“异常追踪性能分析用户行为分析”一体化。以下以Sentry开源、免费、易用为例// 1. 注册Sentry账号并创建项目获取DSN // Sentry官网https://sentry.io/创建项目后获取DSN如https://xxxoxxx.ingest.sentry.io/xxx // 2. 项目集成SentryVue 3项目 // 安装依赖 // npm install sentry/vue sentry/tracing -S // 3. 在main.js中初始化Sentry import { createApp } from vue; import { createRouter } from vue-router; import * as Sentry from sentry/vue; import { Integrations } from sentry/tracing; import App from ./App.vue; import router from ./router; const app createApp(App); // 初始化Sentry Sentry.init({ app, dsn: import.meta.env.VITE_SENTRY_DSN, // 从环境变量获取不同环境不同DSN integrations: [ // 路由集成监控页面跳转性能 new Integrations.BrowserTracing({ routingInstrumentation: Sentry.vueRouterInstrumentation(router), tracePropagationTargets: [localhost, import.meta.env.VITE_API_BASE_URL] }), // Vue集成监控组件渲染错误 new Integrations.Vue({ app, attachProps: true // 捕获组件props信息便于调试 }) ], // 采样率生产环境可设为0.1避免上报过多数据 tracesSampleRate: process.env.NODE_ENV production ? 0.1 : 1.0, // 环境标识区分开发/测试/生产 environment: import.meta.env.NODE_ENV, // 发布版本与Git提交号关联便于定位代码版本 release: vue-project${import.meta.env.VITE_APP_VERSION} }); app.use(router); app.mount(#app); // 4. 自定义错误上报主动捕获异常 const handleSubmit async () { try { await submitApi(formData.value); } catch (err) { // 主动上报异常并添加额外信息 Sentry.captureException(err, { extra: { formData: formData.value, userId: 12345 }, tags: { module: order, // 标记模块 action: submit } }); alert(提交失败请重试); } }; // 5. 查看监控数据 // 登录Sentry后台可查看 // - 错误追踪JS错误的调用栈、发生频率、涉及用户数 // - 性能分析页面加载、接口请求的耗时分布 // - 用户行为错误发生前的用户操作路径如点击了哪个按钮、跳转了哪个页面四、Day33问题定位与优化闭环——从“监控”到“解决”监控的最终目的是“解决问题”职场中需建立“监控报警→问题定位→优化修复→验证复盘”的闭环流程避免监控数据成为“无效数据”。1. 实战5建立监控报警机制仅监控不报警会导致问题无法及时发现。需结合工具或自定义开发实现报警功能专业工具报警Sentry、ARMS等工具支持配置报警规则如“JS错误率超过1%时报警”“LCP超过4秒时报警”报警方式包括邮件、短信、企业微信/钉钉机器人自定义报警基于自定义埋点数据后端判断阈值后通过接口推送报警信息到企业微信机器人// 后端报警逻辑示例Node.js // 当JS错误率超过1%时触发报警 const checkErrorRate async () { // 查询近10分钟的错误数和访问量 const { errorCount, visitCount } await monitorModel.queryErrorRate(); const errorRate (errorCount / visitCount) * 100; if (errorRate 1) { // 调用企业微信机器人API推送报警 await axios.post(https://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyxxx, { msgtype: text, text: { content: 【前端报警】JS错误率超标\n错误率${errorRate.toFixed(2)}%\n错误数${errorCount}\n访问量${visitCount}\n链接https://sentry.io/xxx, mentioned_mobile_list: [138xxxx8888] // 负责人 } }); } }; // 定时执行检查每10分钟 setInterval(checkErrorRate, 10 * 60 * 1000);2. 实战6线上问题定位技巧线上问题往往难以复现需结合监控数据和调试工具快速定位// 1. 结合Sentry定位JS错误 // 场景用户反馈“点击支付按钮后页面崩溃” // 定位步骤 // - 登录Sentry后台筛选“支付模块”的错误找到对应的错误信息 // - 查看错误调用栈如“Cannot read property amount of undefined” // - 查看错误上下文Sentry捕获的组件props、用户操作路径如“进入订单页→选择商品→点击支付” // - 定位代码找到支付按钮点击事件的代码发现未判断订单数据是否存在 // 修复添加数据存在性校验 const handlePay () { // 修复前直接使用orderData.amount // const amount orderData.amount; // 修复后添加校验 if (!orderData || !orderData.amount) { Sentry.captureMessage(订单数据异常, { extra: { orderData } }); alert(订单数据异常请刷新页面重试); return; } // 正常执行支付逻辑 }; // 2. 结合Performance API定位性能问题 // 场景用户反馈“首页加载慢要等5秒才能显示内容” // 定位步骤 // - 查看监控数据发现TTFB首字节时间高达3秒正常应≤500ms // - 确认是后端接口响应慢还是前端资源加载慢 // - 若TTFB高联系后端排查接口性能如SQL查询优化 // - 若前端加载慢查看Performance面板的“资源加载瀑布图”找到加载慢的资源如大图片、第三方脚本 // 优化对大图片进行压缩第三方脚本改为异步加载如广告脚本 // script srchttps://third-party-ad.js async/script // 3. 复现线上环境问题 // 使用Chrome DevTools模拟线上环境 // - 网络切换到“Slow 3G”模拟弱网环境 // - 设备选择“iPhone SE”等低端设备模拟性能瓶颈 // - 环境通过“本地覆盖”功能加载生产环境的资源 // - 调试开启“Preserve log”保留控制台日志复现用户操作步骤3. 优化闭环从修复到复盘问题修复后需验证效果并复盘避免同类问题再次发生效果验证修复后发布测试环境用Lighthouse工具测试性能指标确认是否达标监控线上数据观察错误率、加载时间是否下降复盘总结召开小范围复盘会记录“问题现象→根因→解决方案→预防措施”更新到项目Wiki如“支付按钮崩溃问题因未校验订单数据导致后续所有交互按钮需添加数据合法性校验”工具优化根据问题类型优化监控规则如“新增订单数据异常的监控埋点”实现“提前预警”。五、3天总结前端安全与监控职场能力清单安全防范掌握XSS、CSRF的核心防范方案能使用DOMPurify过滤恶意脚本、通过CSRF Token防范跨站请求理解HttpOnly、CSP等安全机制的作用监控实现能基于Performance API实现自定义性能监控通过error事件监控JS错误集成Sentry等专业工具实现企业级监控问题定位掌握结合监控数据和DevTools定位线上问题的技巧能区分前端性能问题和后端接口问题快速复现并修复常见线上故障闭环管理能建立“监控-报警-修复-复盘”的优化闭环通过报警机制及时发现问题通过复盘总结避免同类问题重复发生作业基于自己的Vue项目完成以下任务① 集成DOMPurify和CSRF Token防范XSS和CSRF攻击② 集成Sentry监控配置错误报警规则③ 基于Performance API实现LCP、FCP指标监控并上报分析项目性能瓶颈并优化。下一篇预告Day34-36 前端工程化进阶——从“单人开发”到“团队协作”对标职场“大型项目协作”需求
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

彩票网站开发appqq空间关闭申请网站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 制作一个交互式学习模块:1) 用动画演示ES模块和CommonJS的区别 2) 可交互修改的代码沙盒 3) 实时错误反馈系统 4) 渐进式练习题目。要求:a) 从最简单的scrip…

张小明 2026/1/3 14:46:49 网站建设

检察网站建设请示网页设计薪资多少

8位可控加减法器原码一位乘法器设计算术逻辑运算单元ALU这个需要前置设备4位先行进位741824位快速加法器16位快速加法器32位快速加法器算术逻辑运算单元ALU汉字字库存储芯片扩展实验寄存器文件设计微程序地址转移逻辑设计

张小明 2026/1/10 0:29:21 网站建设

论坛网站怎么做wordpress是做什么的

你是否曾在物联网设备上运行JavaScript时遭遇"内存爆表"的尴尬?当Node.js在资源受限的嵌入式环境中显得笨重不堪时,QuickJS就像一把多功能工具,以200KB的娇小身材承载完整的ES2020特性。本文将带你用全新的视角,从问题根…

张小明 2026/1/10 4:28:06 网站建设

做网站的能赚多少钱学生网页设计主题推荐

当其他公链还在为 TPS 过千挣扎时,Solana 已实现每秒数万笔交易。这头"性能怪兽"究竟藏着哪些黑科技?本文将为你拆解其架构设计的精妙之处。 一、突破常规的共识革命 1.1 PoS 的颠覆性进化 Solana 的共识基础仍是 PoS,但通过创新的…

张小明 2026/1/10 0:27:52 网站建设

上海网站建设费用多少山东济南发布最新通知

英雄联盟皮肤自由定制:R3nzSkin完整使用手册 【免费下载链接】R3nzSkin Skin changer for League of Legends (LOL).Everyone is welcome to help improve it. 项目地址: https://gitcode.com/gh_mirrors/r3n/R3nzSkin 还在为心仪的皮肤价格而犹豫吗&#xf…

张小明 2026/1/10 1:43:09 网站建设

苏州建站模板平台深圳华强北商城网站建设

引言 作为Linux OS镜像定制开发的DevOps专家和Anaconda维护者,我深刻理解Kickstart文件在自动化安装中的关键作用。本文将结合Red Hat官方文档及实际案例,系统阐述如何在Kickstart文件中安全配置用户名和密码,解决密文密码安装失败等常见问题…

张小明 2026/1/6 3:52:49 网站建设