前端安全核心知识点总结笔记

10 阅读4分钟

前端安全核心知识点总结笔记

一、前端基础:网页的“三大件”

(一)HTML:网页的“骨架”

  • 作用:只负责网页“有什么”,定义结构和内容(比如标题、输入框、按钮),不管好不好看、能不能互动。

  • 核心元素:

    • 标签:像“积木块”,比如<h2>是标题、<input>是输入框、<form>是表单(收集账号密码用)。

    • 属性:标签的“设置项”,比如id是元素的“门牌号”(唯一标识,方便找它)、src是图片的路径、method是表单提交方式(POST比GET安全,密码用POST传,不会显示在URL上)。

  • 常用场景:登录页面的账号输入框、提交按钮,都是用HTML搭出来的。

(二)CSS:网页的“皮肤”

  • 作用:负责网页“长什么样”,管颜色、大小、位置、美化,让页面看起来正规、好看。

  • 核心用法:

    • 选择器:找要美化的元素,比如h2选中所有二级标题(元素选择器)、#loginBtn选中id为loginBtn的按钮(ID选择器,优先级更高)。

    • 实用价值:钓鱼网站靠CSS伪装成官方页面,比如仿QQ登录页,让用户看不出真假。

(三)JavaScript:网页的“灵魂”

  • 作用:让网页“活起来”,处理互动(点击按钮、弹窗)、校验输入(比如账号不能为空)、动态效果(删除确认)。

  • 核心技能:

    • 找元素:用document.getElementById("id名"),通过“门牌号”精准找到输入框、按钮。

    • 拿内容:用.value获取输入框里用户填的内容(比如账号密码)。

    • 事件触发:点击(onclick)、输入聚焦(onfocus)、图片加载失败(onerror)等,比如点击登录按钮触发校验。

    • 前端校验:比如写个函数,检查账号密码是不是空的,空的就弹窗警告,阻止提交。

二、前端安全核心风险:XSS跨站脚本攻击

(一)是什么?

  • 通俗说:攻击者把恶意代码(比如弹窗、偷信息的脚本)伪装成正常内容,插入到网页里,浏览器会把它当成正经代码执行,造成攻击。

  • 为啥会发生?:网站没过滤用户输入,直接把用户写的内容显示在页面上——如果用户输入的是“代码”,而不是“文字”,就会被执行。

(二)攻击怎么操作?

  1. 观察:比如网页URL是http://xss/level1.php?name=test,页面显示“Hello test”,说明name参数的内容会直接显示在页面上。

  2. 分析:看源码发现test被放在<h2>标签里,没有任何过滤。

  3. 搞事情:构造恶意参数?name=<script>alert(1)</script>,提交后页面弹出1,说明恶意脚本被执行了,漏洞成立。

(三)怎么防?

  1. 核心原则:永远别信任用户输入!

  2. 前端防御(简单有效):

    • 不用innerHTML渲染用户内容:改用textContent,它会把所有内容当纯文字,不识别HTML标签和脚本(比如输入<script>,就显示成普通文字,不执行)。

    • 转义特殊字符:如果必须用innerHTML,就把<转成&lt;>转成&gt;,让浏览器把它们当文字显示,不解析成标签。

  3. 后端防御(关键):

    • 前端校验是“防君子不防小人”:用户能通过浏览器工具修改JS代码,绕过前端校验(比如把“为空则阻止提交”改成“永远允许提交”)。

    • 后端必须再校验:收到数据后,重新检查是否为空、格式对不对,过滤恶意字符,这是最后一道防线。

  4. 其他辅助:做好权限控制(防止越权操作)、记录操作日志(方便后续查问题)。

三、实用小技巧

  1. 表单提交:用POST传敏感数据(密码),GET会把参数拼在URL上,不安全;点击提交默认刷新页面,用return false能阻止。

  2. 输入校验:用.trim()去除输入内容首尾的空格,防止用户只输空格绕过空值检查。

  3. 开发工具:用专业编辑器(比如Trae AI),有代码高亮、自动提示,比记事本高效;浏览器按F12能查看源码、调试JS,也能用来测试漏洞。

  4. AI辅助:看不懂代码时,让AI解释;但别依赖AI,自己动手写、调试,才能真正掌握。