PHP开发回顾

2019-01-14 13:57:36   PHP

  php  

PHP基础回顾

Mysql设计和优化

索引设计

网站安全防护

xss攻击原理和防护


原理
攻击者利用页面输入和输出的功能,在输入时使用闭标签再加脚本代码等技巧,当服务器输出这些输入信息到页面时,就会插入并执行脚本代码。解决方法是可以在服务端对客户端的输入进行过滤或转义。注意:这里不一定只用script标签,还可以用img等其他标签,或者用onclick等事件方法达到执行脚本代码。
XSS攻击当然不是我们这里所写的添加CSS样式代码这么低端.它可以做到很多危害
1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号 
2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力 
3、盗窃企业重要的具有商业价值的资料 
4、非法转账 
5、强制发送电子邮件 
6、网站挂马 
7、控制受害者机器向其它网站发起攻击

防御
PHP最简单的过滤机制就是转义,对用户的输入和输出进行转义和过滤.
过滤函数: 将filter_var,mysql_real_escape_string,htmlentities,htmlspecialchars,strip_tags函数
1.假定所有的用户输入数据都是“邪恶”的
2.弱类型的脚本语言必须保证类型和期望的一致
3.考虑周全的正则表达式
4.strip_tags、htmlspecialchars 这类函数很好用
5.外部的 Javascript 不一定就是可靠的
6.引号过滤必须要重点注意
7.除去不必要的 HTML 注释
8.在输出html时,加上Content Security Policy的Http Header (作用:可以防止页面被XSS攻击时,嵌入第三方的脚本文件等,缺陷:IE或低版本的浏览器可能不支持)
9.在设置Cookie时,加上HttpOnly参数(作用:可以防止页面被XSS攻击时,Cookie信息被盗取,可兼容至IE6,缺陷:网站本身的JS代码也无法操作Cookie,而且作用有限,只能保证Cookie的安全)
10.在开发API时,检验请求的Referer参数(作用:可以在一定程度上防止CSRF攻击,缺陷:IE或低版本的浏览器中,Referer参数可以被伪造)

CSRF攻击原理和防护

原理:攻击者一般通过XSS使用户在已经授权的网站中不知不觉发起某些请求,从而实现自己的目的。XSS是实现CSRF的有效方法,但不是唯一方法

CSRF危害与防范
既然发贴的请求可以伪造,那么删帖、转帐、改密码、发邮件全都可以伪造。CSRF不能绝对的防范,因为他是通过伪造请求来实现的,而请求可以来自各自各样的方式。我们可以通过提高CSRF的攻击门槛进行适当的防范,做法有:重要的请求应该通过post方式进行(杜绝通过点击链接进行攻击)、服务端生成随机token,保存在页面隐藏域中,在发出请求的时候一并发出,服务端在验证其在session中的token,两者一致后才处理请求,处理请求后必须马上销毁token。(这种做法可以提高攻击难度)、防范XSS攻击(这样能有效防范CSRF)

防御
1.用户登录后随即生成token,当用户的重要操作使用post传递方式,并设置中间件拦截比对token是否一致
2.尽量使用POST,限制GET
3.IE6、7、8、Safari会默认拦截第三方本地Cookie(Third-party Cookie)的发送。
但是Firefox2、3、Opera、Chrome、Android等不会拦截,所以通过浏览器Cookie策略来防御CSRF攻击不靠谱,只能说是降低了风险
4.Session Cookie(在浏览器关闭后,就会失效,保存到内存里),
Third-party Cookie(即只有到了Exprie时间后才会失效的Cookie,这种Cookie会保存到本地
5.验证码辅助手段,强制用户必须与应用进行交互,才能完成最终请求。在通常情况下,验证码能很好遏制CSRF攻击
6.Referer Check在Web最常见的应用就是“防止图片盗链”。
同理,Referer Check也可以被用于检查请求是否来自合法的“源”(Referer值是否是指定页面,或者网站的域),如果都不是,那么就极可能是CSRF攻击。
但是因为服务器并不是什么时候都能取到Referer,所以也无法作为CSRF防御的主要手段。
但是用Referer Check来监控CSRF攻击的发生,倒是一种可行的方法。

SQL注入攻击原理和防护

服务器常见攻击手段原理和防护

服务器搭建维护相关

服务器进程相关命令

软件安装和环境配置

项目相关(易推严选)

项目开发亮点

开发中问题和解决方案

支付逻辑设计