PHP常见漏洞与编码安全-PHP攻防入门-学习笔记

来源:互联网 发布:android sql语句 编辑:程序博客网 时间:2024/06/03 20:15

一、在地址栏直接输入目标地址跳转。如在未登录的情况下直接访问需要登录才能显示的目标页面

办法:采用session会话技术,在目标页面开启session验证,session中没有存储对应的用户信息代表用户未登录。用户登录时存储相应信息到session中。


二、跨站脚本攻击(Cross Site Scripting,XSS)

是一种经常出现在Web应用程序中的计算安全漏洞,是由于Web应用程序对用户的输入过滤不足而产生的.

攻击者利用网站漏洞把恶意得脚本代码(通常包括HTML代码和客户端JS脚本)注入到网页之中,当其他用户浏览这些网页时,就会执行其中的恶意代码,对受害用户可能采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击。

如http://localhost/test.php?name=<script>alert(/我的名字是张三/)</script>

或者是在某些页面比如留言版中插入无限弹窗,跳转页面什么的

办法:

1.strip_tags 删除string中 所有html标签

2.htmlspecialchars 只对"<",">","&","'","""字符进行转义(实体字符)

3.htmllentities, 对所有html进行转义

反射型XSS

存储型XSS

DOM Based XSS


三、SQL注入攻击

恶意用户通过万能用户名,或者万能密码改变sql结构达到登录网站目的

万能密码admin' or '5'='5

万能用户名 admin' union select * from admin;--   PS:联合查询需要两张表拥有相同的字段数量与字段名

办法:不采取mysql链接方式,使用pdo连接数据库,用预处理查询,这也是pdo安全系数比mysql高的表现之一

或者查询出来再分别验证用户名与密码


四、跨网站请求伪造攻击(CSRF-防盗链)

CSRF Cross Site Request Forgeries

攻击者伪造目标用户的HTTP请求,然后此请求发送到有CSRF漏洞的网站,网站执行此请求后,引发跨站请求伪造攻击

总结攻击:1.伪造链接,引诱用户点击,或者让用户在不知情的情况下访问

                    2.伪造表单,引诱用户提交。表单可以是隐藏的,用图片或链接的形式伪装


办法:使用页面唯一验证,创建token验证


五、文件上传漏洞

恶意用户上传一些有攻击性的文件。

办法:限制上传的文件类型,大小等,减少对网站的攻击


六、表单重复提交

用户提交表单后通过刷新提交成功页面不断重复提交重复数据。

办法:将表单提交页面提交时间存入SESSION,然后添加成功后删除SESSION,第二次提交再比对就不行了


七、HTTP请求欺骗攻击

模拟http的post等请求向目标站点发送有害数据进行攻击,使用技术sockt,curl都可以

办法:在添加页面设置token在session


八、PHP安全配置=>php.ini

1.控制php脚本能访问的目录

使用open_basedir选项能够控制php脚本只能访问指定的目录,能够避免php脚本访问不该访问的文件,一定程度上限制了phpshell的危害,一般可以设置为只能访问网站目录

2.关闭危险函数

disable_functions = phpinfo,system等等,还有一些文件和目录的操作如readdir,delete


3.错误信息控制

display_errors = Off

如显示警告以上的信息:error_reporting_E_WARNING & E_ERROR


原创粉丝点击