前端安全

1. SQL注入

1.1 概念:

通过 SQL 命令插入到 web 表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。

1.2 原理:

SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。 目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。SQL语法允许数据库命令和用户数据混杂在一起的。,用户数据有可能被解释成命令, 这样的话,远程用户就不仅能向Web应用输入数据,而且还可以在数据库上执行任意命令了。

1.3 方式:

1.3.1 直接注入式攻击法

直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。

1.3.2 间接的攻击法

将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。如以直接注入式攻击为例。就是在用户输入变量的时候,先用一个分号结束当前的语句。然后再插入一个恶意SQL语句即可。由于插入的命令可能在执行前追加其他字符串,因此攻击者常常用注释标记“—”来终止注入的字符串。执行时,系统会认为此后语句位注释,故后续的文本将被忽略,不背编译与执行。

1.4 预防;

1.4.1 采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。

原理:sql注入只对sql语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对sql语句进行解析,准备,因此也就避免了sql注入问题。

优点:
a. 代码的可读性和可维护性;
b. PreparedStatement尽最大可能提高性能;
c. 最重要的一点是极大地提高了安全性。

1.4.2 使用正则表达式过滤传入的参数
1.4.3 字符串过滤
1.4.4 jsp中调用该函数检查是否包函非法字符
1.4.5 JSP页面添加客户端判断代码

2. XSS 攻击

2.1 概念:

XSS 是一种经常出现在 web 应用中的计算机安全漏洞。它允许恶意 web 用户将代码植入到提供给其它用户使用的页面中,比如这些代码包括 HTML 代码和客户端脚本,攻击者利用 XSS 漏洞控制访问控制。

2.2 类型:

2.2.1 本地利用漏洞——存在于页面中客户端脚本自身。
2.2.2 反射式漏洞—— web 客户端使用 server 端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经 HTML 实体编码,客户端代码能够注入到动态页面中。
2.2.3 存储式漏洞——将攻击脚本上传到 web 服务器上,使得所有访问该页面的用户都面临信息泄露的可能。

2.3 预防;

2.3.1 过滤特殊字符(将用户提交内容进行过滤);
2.3.2 使用 HTTP 头指定类型。

你可能感兴趣的:(前端安全)