全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 20 道配套习题

JS安全与边界处理

专题说明

本专题聚焦JavaScript安全编码的核心技能,系统讲解CSRF、XSS等常见Web攻击的防御策略,以及输入验证、输出编码等安全编程最佳实践,帮助开发者构建安全可靠的前端应用。

学习目标

  1. 理解CSRF攻击原理,掌握Token验证、SameSite Cookie等防御技术
  2. 理解XSS攻击类型与危害,掌握输入净化与输出编码策略
  3. 掌握白名单验证、内容安全策略(CSP)等安全防护措施
  4. 培养安全编码意识,规避常见安全陷阱

学习内容

  • 跨站请求伪造(CSRF)防御机制
  • 跨站脚本攻击(XSS)类型与防护
  • 输入验证与净化策略
  • 输出编码与转义技术
  • 安全编码最佳实践

学习建议

  1. 先理解攻击原理,再学习防御策略
  2. 结合实际项目场景练习安全编码
  3. 重点关注现代框架的安全特性与使用边界
  4. 养成防御性编程习惯,对用户输入保持警惕

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
多选题

关于跨站请求伪造(CSRF)攻击的防御措施,以下哪些是有效的防御策略?

A

使用CSRF Token验证,每次请求携带服务器生成的随机Token

B

验证HTTP请求头的Referer或Origin字段

C

对关键操作使用POST请求替代GET请求

D

设置Cookie的SameSite属性为Strict或Lax

E

在前端使用JavaScript验证用户身份

F

对敏感操作要求二次验证(如输入密码或验证码)

2
多选题

以下哪些场景容易受到CSRF攻击?

A

用户登录银行网站后,访问恶意网站发起转账请求

B

网站使用GET请求执行状态变更操作(如删除数据)

C

网站未设置Cookie的SameSite属性

D

网站使用HTTPS传输数据

E

用户点击恶意邮件中的链接修改账户密码

F

网站对所有请求进行CSRF Token验证

3
单选题

设置Cookie的SameSite属性为Strict时,Cookie的行为是什么?

A

允许所有跨站请求携带Cookie

B

只允许同站请求携带Cookie,完全禁止跨站请求

C

允许安全的跨站GET请求携带Cookie,禁止跨站POST

D

允许跨站请求携带Cookie,但需要用户显式确认

4
单选题

以下哪种CSRF Token实现方式最安全?

A

将Token存储在前端localStorage中,每次请求读取

B

将Token嵌入到URL参数中传递

C

将Token存储在服务器Session中,通过隐藏表单字段或HTTP头传递

D

使用固定的Token值,所有用户共享同一个Token

5
填空题

CSRF攻击利用了浏览器自动携带______的特性,攻击者在用户已登录目标网站的情况下,诱导用户访问恶意页面,恶意页面自动向目标网站发起请求,由于浏览器会自动携带用户的______,服务器误认为请求来自用户本人。

6
判断题

CSRF攻击不需要获取用户的Cookie内容,只需要浏览器自动携带Cookie即可完成攻击。

A

B

7
多选题

以下哪些是有效的XSS防御措施?

A

对用户输入进行HTML实体编码后输出

B

使用textContent代替innerHTML设置文本内容

C

设置Cookie的HttpOnly属性防止JS读取敏感Cookie

D

使用Content-Security-Policy(CSP)限制脚本来源

E

对URL参数进行JavaScript编码后使用

F

使用eval执行用户输入的表达式

8
多选题

关于XSS攻击的类型,以下哪些说法是正确的?

A

反射型XSS:攻击代码通过URL参数传递,服务器将其反射回页面

B

存储型XSS:攻击代码存储在服务器数据库中,每次访问都会执行

C

DOM型XSS:攻击代码完全在客户端执行,不经过服务器

D

存储型XSS危害最大,影响所有访问该页面的用户

E

反射型XSS需要诱导用户点击恶意链接才能触发

F

DOM型XSS可以通过服务器端输入验证完全防御

9
多选题

以下哪些前端编码实践可以有效防御XSS攻击?

A

使用encodeURIComponent编码URL参数

B

使用DOM API的setAttribute设置属性,而非拼接HTML字符串

C

对用户输入使用正则表达式过滤HTML标签

D

使用框架提供的安全绑定机制(如Vue的v-text、React的{})

E

禁止使用innerHTML、document.write等危险API

F

将用户输入直接插入script标签执行

10
单选题

Content-Security-Policy(CSP)的主要作用是什么?

A

加密传输数据防止窃听

B

限制页面可以加载资源的来源,阻止恶意脚本执行

C

验证用户身份防止未授权访问

D

防止SQL注入攻击

11
单选题

以下代码存在什么安全风险?

JavaScript
element.innerHTML = `<div>${userInput}</div>`;
A

没有安全风险,innerHTML会自动编码内容

B

存在XSS风险,userInput可能包含恶意HTML/JS代码

C

存在CSRF风险,会自动发送请求

D

存在内存泄漏风险,会创建过多DOM元素

12
填空题

防御XSS攻击时,常用的HTML实体编码是将 < 编码为______,将 > 编码为______,将 " 编码为______,将 ' 编码为______

13
判断题

设置Cookie的HttpOnly属性可以完全防止XSS攻击。

A

B

14
多选题

关于用户输入验证,以下哪些做法是正确的?

A

在前端和后端都进行输入验证

B

使用白名单验证而非黑名单过滤

C

验证数据类型、长度、格式和范围

D

对验证失败的数据尝试修复后使用

E

使用正则表达式严格验证邮箱、URL等格式

F

对所有输入统一使用相同的验证规则

15
多选题

以下哪些输入验证场景需要特别关注安全问题?

A

用户注册时的邮箱和手机号验证

B

文件上传时验证文件类型和大小

C

URL跳转时验证目标地址是否为合法域名

D

搜索功能时验证搜索关键词长度

E

表单提交时验证必填字段是否为空

F

JSON解析时直接使用eval处理用户输入

16
单选题

为什么输入验证推荐使用白名单而非黑名单?

A

白名单性能更好,执行速度更快

B

白名单实现更简单,代码更少

C

白名单可以防止未知的攻击方式,黑名单可能遗漏

D

黑名单在现代浏览器中已不再有效

17
单选题

以下哪种文件上传验证方式最安全?

A

只检查文件扩展名是否在允许列表中

B

检查文件的MIME类型是否正确

C

检查文件扩展名、MIME类型,并验证文件内容的实际类型

D

信任用户提交的文件信息,不做验证

18
填空题

输入净化(Sanitization)是指在验证通过后,进一步移除或转换输入中的________________,使其安全地用于后续处理。常见的净化方式包括HTML实体编码、移除HTML标签、限制字符集等。

19
判断题

前端输入验证足够安全,不需要后端再次验证。

A

B

20
多选题

用户输入在不同输出上下文中需要使用不同的编码方式,以下哪些匹配是正确的?

A

HTML内容上下文:使用HTML实体编码(<、>等)

B

HTML属性上下文:使用HTML属性编码,确保属性值被正确引号包裹

C

JavaScript上下文:使用JavaScript编码(转义引号、反斜杠等)

D

URL上下文:使用encodeURIComponent编码参数值

E

CSS上下文:使用CSS编码(转义特殊字符)

F

所有上下文统一使用HTML实体编码即可

← 上一个专题 JS 运算符与流程控制
下一个专题 → JS引擎与运行时原理专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库