探讨php的安全性问题

我们网站的安全至关重要,

sql注入和xss攻击和csrf攻击都是怎么回事,我们来探讨一下

一、SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

例如:
```



```
sqlzhuru.php:
复制代码
```
Query($sql));
```
复制代码

这样就可以查到所有信息,解决方法:

1. 手动检查每一条数据是否为正确的数据类型,自己写一个方法来过滤提交数据

2.系统自带的一个方法:mysql_real_escape_string()过滤数据,但该方法在未来版本会淘汰

复制代码
```
Query($sql));
```
复制代码

3.使用PDO预处理

二、XSS攻击

跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。

例如:
```



```
处理页面:

```



```
复制代码
处理页面:

复制代码
```
Query($sql,1);
}
```
复制代码
打开csrf.php页面:

数据库中数据:

这种get传值方式会在地址栏显示提交数据,在不关闭页面的情况下,再做一个页面,把地址复制进去
```



```
这样请求这个页面,也会将数据库中数据改掉:

而如果改成POST方式,可以减少这种情况,也可以在表单中用隐藏域多提交一条数据,例如:

复制代码
```




```
复制代码
处理页面:

复制代码
```
Query($sql,1);
}
}
```
复制代码
但是这种方式也不能完全避免CSRF攻击,即使用MD5加密,也还是有人可以解出来,最好的方法还是使用验证码。你不知道验证码是怎么生成的,就无法进行CSRF攻击。

SQL注入只需过滤提交的字符串即可,XSS攻击用PDO预处理,CSRF攻击用验证码就可解决。

有些黑客会伪造FILE数组上传,如何辨别:move_upload_file()可以判断是不是真实文件。

以后做项目,有关安全性的地方一定要谨慎,千万不要轻易相信用户上传或提交的任何数据,一定要进行正确处理。

    A+
发布日期:2022年03月15日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: