面试题答案
一键面试-
SQL 注入漏洞
- 漏洞阐述:用户输入的数据被恶意拼接进 SQL 语句,改变原本 SQL 语句的逻辑,从而获取数据库敏感信息或执行恶意操作。例如,在登录验证的 SQL 查询语句中,若直接拼接用户输入的用户名和密码,恶意用户可通过输入特殊字符改变 SQL 语句的语义。
- 防范措施:使用参数化查询。在 ADO(ActiveX Data Objects)等数据库访问技术中,使用参数化查询代替直接拼接字符串。例如,在 VB 中使用 ADODB.Command 对象时,通过.Parameters 集合来设置参数值,这样数据库会将参数值视为数据而非 SQL 语句的一部分,有效防止 SQL 注入。
-
跨站脚本攻击(XSS)漏洞
- 漏洞阐述:攻击者往 Web 页面里插入恶意 HTML 标签或 JavaScript 代码。当用户浏览该页面时,嵌入其中的脚本会被执行,从而达到窃取用户信息(如 cookie)、控制用户浏览器等目的。如果 VB 开发的 Web 应用在处理用户输入并显示在页面上时未进行适当过滤,就容易出现此漏洞。
- 防范措施:对用户输入进行严格的过滤和转义。在将用户输入显示到页面之前,使用 Server.HTMLEncode 等函数对输入内容进行转义,将特殊字符转换为 HTML 实体,使恶意脚本无法执行。同时,限制输入的字符类型和长度,只允许合法字符输入。
-
文件包含漏洞
- 漏洞阐述:当应用程序动态包含用户可控制的文件时,如果没有对包含的文件来源进行严格校验,攻击者可以通过修改包含文件的路径,包含恶意文件,从而执行恶意代码。比如在 VB 开发的 Web 应用中,通过一个变量来指定要包含的文件路径,若该变量可被用户控制且未验证,就存在此风险。
- 防范措施:对文件包含的路径进行严格的白名单验证。只允许包含指定目录下的文件,检查文件路径是否在允许的范围内,不允许用户输入超出指定范围的路径。同时,避免使用动态变量直接指定包含文件的路径,如果必须使用,要对变量进行严格的验证和过滤。