欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

网络安全-常见网络安全攻击

程序员文章站 2022-06-15 11:19:51
...

主要介绍比较常见的3种网络安全攻击手段,分别是:跨站脚本攻击(XSS)攻击、跨站请求伪造(CSRF)攻击、SQL注入攻击。

1、XSS攻击:应该算是最普遍的应用程序层攻击之一,攻击的目的是盗走客户端 cookies,或者任何可以用于在 Web 站点确定客户身份的其他敏感信息。

用这三种方式可以保护站点不受 XSS 攻击:

1.执行内部的输入过滤(有时候称为输入清洁设备)。对于内部书写的每个脚本中的每个用户输入 —— 参数或 HTTP 头,都应该应用高级的 HTML 标签(包括 JavaScript 代码)过滤。举例来说,应该过滤 <script> 标签。该方法有一些严重的不利因素:
* 要求应用程序的编程人员非常精通安全。

* 要求编程人员覆盖所有可能的输入来源(查询参数、POST 请求的 body 参数、HTTP 头)。* 它不能抵御第三方脚本或服务器中的安全漏洞。举例来说,它不能防御 Web 服务器错误页面中的问题(通常显示了资源的路径)。

2、执行“输出过滤”,换句话说,当发回给浏览器时过滤用户数据,而不是当被脚本接收时。一个很好的示例是通过一个脚本将输入数据插入到数据库中,然后再从数据库呈现数据。在这种情况下,重要的是不向原始的输入字符串应用过滤,而只向输出版本应用过滤。这种方法的缺陷类似于对输入过滤的缺陷。

3、通过安装第三方应用程序防火墙,防火墙在 XSS 攻击到达 Web 服务器和易受攻击的脚本之前拦截它们,并阻塞它们。不论是来自内部应用程序的脚本或路径、第三方脚本,或根本不描述资源的脚本(举例来说,用来引起来自服务器的 404 页面响应的脚本),应用程序防火墙都可以以一般的方式覆盖所有输入方法(包括路径和 HTTP 头)。对于每个输入源,应用程序防火墙根据各种 HTML 标签模式和 JavaScript 模式检查数据。如果匹配成功,就拒绝该请求,恶意的输入不会到达服务器。

 

2、SQL注入攻击:跟XSS攻击有点类似,以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的。对于SQL注入攻击的详细介绍,可以上网搜索《SQL注入攻防入门详解》这篇文章,讲得比较详细了。

防止SQL注入攻击:

* 类型检查:对接收数据有明确要求的,在方法内进行类型验证。如数值型

* 长度验证:要进行必要的注入,其语句也是有长度的。所以如果你原本只允许输入10字符,

那么严格控制10个字符长度,一些注入语句就没办法进行。

* 关键字过滤:这个门槛比较高,因为各个数据库存在关键字,内置函数的差异,所以对

编写此函数的功底要求较高

参数化查询:在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成 SQL 指令的编译后,才套用参数运行,因此就算参数中含有具有损的指令,也不会被数据库所运行

 

3、CSRF攻击

   CSRF攻击是黑客借助受害者的 cookie 骗取服务器的信任,但是黑客并不能拿到 cookie,也看不到cookie的内容(跟XSS攻击的区别)。另外,对于服务器返回的结果,由于浏览器同源策略的限制,黑客也无法进行解析。因此,黑客无法从返回的结果中得到任何东西,他所能做的就是给服务器发送请求,以执行请求中所描述的命令,在服务器端直接改变数据的值,而非窃取服务器中的数据。所以,我们要保护的对象是那些可以直接产生数据改变的服务,而对于读取数据的服务,则不需要进行 CSRF 的保护。

* 验证Http Referer字段

在请求地址中添加token并验证