WEB网络中的安全问题及防护

@心欲无痕  July 19, 2018

1、SQL注入问题

相信大家面对这个问题的时候也是无语了,这里举个简单的示例,来演示SQL的安全性问题,后续碰到相应的问题的时候,我们会及时更新:

假设用户使用账户username与密码passwd登陆当前的系统:

SELECT * FROM user WHERE username = $username AND passwordd = $passwd;

那么当我们用户输入账号admin,密码:333

SELECT * FROM user WHERE username = 'admin' AND passwordd = '3333';

此时用户如果正常输入的情况下,SQL正常,但是如果当用户稍微添加一些调料就会发生问题,如下:

SELECT * FROM user WHERE username = 'admin' or ''-- 'AND passwordd = '3333';

那么此时真正起作用的SQL是如下的语句:

SELECT * FROM user WHERE username = 'admin' or '';

此时就发生了一件大事情,当用户输入 admin 或者 ``空白字符串的时候就会成功的获取到用户信息,进行了注入攻击,丢失用户数据与违心交易。

2、XSS(跨站攻击)

跨站攻击也称为:跨站脚本攻击,常见危害为:信息泄露、操控账号进行无授权的交易等。

举个实例:

echo $_GET['body_info'];

当用户在外围系统进行GET参数的入侵的时候,就会发现:

$_GET['body_info'] = '<script>alert("hello");</script>';

那么系统就会直接输出本js代码达到跨站脚本攻击的目的。如果用户的网站是使用session或者cookie进行登录、授权验证的话,那么极其危险,因为可以通过 document.cookie进行信息的获取,来伪装用户进行交易或者进行非法操作。

3、CSRF攻击

也称为:跨站请求伪造攻击,即伪造用户的请求进行非法操作。如:

当前的表单信息中如果需要通过form提交两个信息,nameage,那么form表单如下:

<form>
    <input name="name" value="" />
    <input name="age"  value="" />
</form>

那么一旦用户的信息被其他用户抓包,那么用户就可以伪造请求进行攻击,因此也极其不安全,通用的手法是保证单次请求唯一性,进行防止CSRF攻击,如添加隐藏域:

<form>
    <input type="hidden" name="__csrf" value="xdskle92ksflhi3worhsfskf" />
    <input name="name" value="" />
    <input name="age"  value="" />
</form>

每一页面刷新的时候都会自动生成这个 __csrf的令牌来进行请求与响应的唯一对应。这样即使别人取到信息也只能提交这一次信息,无法进行第二次操作。

4、HTTP header攻击

这种攻击发生在了解了http请求协议的基础上,我们知道一个 http 请求就是一个文本协议,具体的协议内容如下:

http请求:

GET / HTTP/1.1\r\n
Content-Length: 29\r\n
Content-Type: text/html;charset=UTF-8\r\n
Host: 127.0.0.1\r\n
\r\n
{"name":"Xan","version":"v1.1.0"}

此时我们知道一个http请求的组成如上所示,如果我们现在有用户恶意进行http请求的数据更改劫持然后提交的话,比如:

GET / HTTP/1.1\r\n
Content-Length: 29\r\n
Content-Type: text/html;charset=UTF-8\r\n
Host: 127.0.0.1\r\n
\r\n
<script>alert(document.cookie);</script>

那么当用户获取到本数据后,就会立即执行js代码,进行数据的泄露,达到攻击的目的。

5、重定向攻击

我们现在的生活中处处都有这个的身影,比方说 oauth授权、支付回调、第三方的回调等等,如果涉及到url的重定向的话,那么这个危险程度就需要记性阻止,列如:仅允许指定的回调uRL进行处理,其余的直接抛出4xx错误即可。如:

http://www.supjos.cn?redirect_uri="http://www.supjos.cn/hello/world"

那么当我们访问这个网站的时候,如果其他的违法者,通过劫持修改了地址:

http://www.supjos.cn?redirect_uri="http://www.xxx.com"

那么如果http://www.xxx.com做的跟www.supjos.cn一样的话,用户就会信以为真的填写信息,达到窃取用户信息的目的。

6、Cookie攻击

在WEB中,js的操控能力越强,危险级别越危险,时常需要谨记安全开发,建议WEB中禁用js的cookie功能。

7、文件上传攻击

1.文件名攻击,上传的文件采用上传之前的文件名,可能造成:客户端和服务端字符码不兼容,导致文件名乱码问题;文件名包含脚本,从而造成攻击.

2.文件后缀攻击.上传的文件的后缀可能是exe可执行程序,js脚本等文件,这些程序可能被执行于受害者的客户端,甚至可能执行于服务器上.因此我们必须过滤文件名后缀,排除那些不被许可的文件名后缀.

3.文件内容攻击.IE6有一个很严重的问题 , 它不信任服务器所发送的 Content-Type,而是自动根据文件内容来识别文件的类型,并根据所识别的类型来显示或执行文件.如果上传一个gif文件,在文件末尾放一段js攻击脚本,就有可能被执行.这种攻击,它的文件名和Content-Type看起来都是合法的 gif 图片,然而其内容却包含脚本,这样的攻击无法用文件名过滤来排除,而是必须扫描其文件内容,才能识别。

哈哈,一般的网络安全问题其实都是从小事做起,自己仔细思考思考应该也可以想到。以后的WEB开发中希望各位能够更加深入的了解安全方面的知识。


评论已关闭