PHP的安全最大化:不对外界展示服务器或程序设计细节(屏蔽错误)

SQL注入

攻击者把SQL命令插入到Web表单的输入域或页面请求的字符串,欺骗服务器执行恶意的SQL命令。

  • 检查变量数据类型和格式
  • 过滤特殊符号
  • 绑定变量,使用预处理语句

XSS 跨站脚本攻击

指恶意攻击者往Web页面里插入恶意代码,当用户浏览该页代码会被执行,从而达到恶意攻击用户的目的。

过滤输出的变量

  • trim()清空空格
  • strp_tags()过滤html标签
  • htmlspecialchars() 值转换特殊字符
  • htmlentities() 转换所有html实体

CSRF:跨站请求伪造

它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站

  • 使用POST,不要使用GET,处理变量也不要直接使用$_REQUEST
  • 检查网页的来源,验证http_reffer字段
  • 检查内置的隐藏变量,在请求中添加token并验证

Session固定攻击/Session劫持攻击

攻击者预先设定session id或获取目标用户的session id。来冒充用户访问应用程序。

  • 定期更改session id

  • 更改session的名称

  • 关闭透明化session id

  • 只从cookie检查session id

  • 使用URL传递隐藏参数

文件上传漏洞攻击

攻击者利用程序缺陷绕过系统对文件的验证与处理策略将恶意代码上传到服务器并获得执行服务器端命令的能力。

常用的攻击手段有:

  • 上传Web脚本代码,Web容器解释执行上传的恶意脚本;
  • 上传Flash跨域策略文件crossdomain.xml,修改访问权限(其他策略文件利用方式类似);
  • 上传病毒、木马文件,诱骗用户和管理员下载执行;
  • 上传包含脚本的图片,某些浏览器的低级版本会执行该脚本,用于钓鱼和欺诈。

总的来说,利用的上传文件要么具备可执行能力(恶意代码),要么具备影响服务器行为的能力(配置文件)

防范方法:

  1. 文件上传的目录设置为不可执行;
  2. 判断文件类型,设置白名单。对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码;
  3. 使用随机数改写文件名和文件路径:一个是上传后无法访问;再来就是像shell、.php 、.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击;
  4. 单独设置文件服务器的域名:由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。

REFERENCE

分类: 后端

发表评论

电子邮件地址不会被公开。 必填项已用*标注