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 漏洞控制访问控制。
网友评论