面试题答案
一键面试- SQL注入漏洞:
- 防护措施:使用参数化查询或存储过程。参数化查询将SQL语句和参数分开处理,数据库不会将参数部分解析为SQL代码,避免恶意SQL语句的执行。例如在Java的JDBC中,可以使用
PreparedStatement
代替Statement
来执行SQL语句。
- 防护措施:使用参数化查询或存储过程。参数化查询将SQL语句和参数分开处理,数据库不会将参数部分解析为SQL代码,避免恶意SQL语句的执行。例如在Java的JDBC中,可以使用
- XSS(跨站脚本攻击)漏洞:
- 防护措施:对用户输入进行严格的过滤和转义。在将用户输入的数据输出到页面之前,使用专门的函数对特殊字符进行转义,如在PHP中可以使用
htmlspecialchars
函数,将<
、>
等字符转换为HTML实体,防止恶意脚本被浏览器执行。
- 防护措施:对用户输入进行严格的过滤和转义。在将用户输入的数据输出到页面之前,使用专门的函数对特殊字符进行转义,如在PHP中可以使用
- CSRF(跨站请求伪造)漏洞:
- 防护措施:在表单和请求中添加CSRF令牌。服务器生成一个随机的、唯一的令牌,并将其包含在表单或HTTP请求头中。当客户端发起请求时,服务器验证令牌的有效性,如果令牌无效则拒绝请求。例如在Spring Security框架中,可以自动生成和验证CSRF令牌。