PHP安全性问题及解决方式

1、SQL注入
解释:SQL注入通俗的讲就是未对用户输入的数据进行过滤,导致在程序在运行时,将用户输入的数据当作SQL语句的一部分进行执行,从而危害服务器安全,常见的 OR 1=1 或者 where 1=1
解决方式:
1、对用户的输入数据进行数据过滤,在进行操作 如:addslashes()或者开启magic_quotes_gpc方法
2、针对获取的数值型数据,进行二次转换,如:intval(),floatval()
3、所有需进行数据库查询的变量都是用单引号包围
4、使用框架 thinkphp、laravel中的sql语法,一般都能阻止SQL注入
2、CSRF攻击
解释:又名“跨站请求伪造”,攻击者首先盗用了你的身份,然后以你的名义进行非法操作,如:用户登录银行网站后又点击了一个非法者自己创建的网站,非法网站能够直接盗取你登录银行网站的登录凭证,并且利用登录凭证做一些非法操作(查账、转钱…)
解决方式:
1、验证HTTP Referer
在head头中有Referer,它记录了该Http请求的源地址,通常情况下,非法者只能在自己的网站上构建请求,所以Referer为非法者的网站,只需将用户每次请求的Referer进行验证即可防御这种攻击,但这种方式存在着漏洞,因为Referer可以被设置
2、在请求中添加token验证
token是服务器返回给用户端的一串随机字段,csrf攻击依赖于浏览器的cookie,而token不依赖cookie(一般使用input框直接表单提交),服务端直接验证提交token是否合法即可防御csrf攻击
3、不充分的密码哈希
大部分的web应用需要保存用户的认证信息,如果密码哈希做的足够好,在网站被攻破时,即可保护用户信息。
MD5和SHA设计的初衷是速度快,而不是密码加密,应该将用户的密码加盐(random_bytes(20))加密,避免两个相同的密码产生相同的哈希,或是使用PHP自带的password_hash()函数加密
3、中间人攻击(MITM)
MITM攻击不是针对服务器攻击而是针对用户进行,攻击者作为中间人欺骗服务器它是用户,欺骗用户它是服务器,从而拦截用户和网站的流量,对此防御的唯一方式是使用https的方式
4、禁止弹出系统错误信息,不要将自己服务器信息暴露在外面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值