相对于Java,C++,C#,Python等语言来说, PHP 在 商城方面有更大的优势,有开发效率高,框架选择多,可选择的开源产品多,可以大大减少开发成本和加快产品迭代,比如基于Thinkphp框架开发出的开源商城DSMall,DSHOP,DSKMS等等,基于此类产品开发可以大大加快开发速度,让项目迅速上线,同时Thinkphp框架可直接升级。
一般情况下我们在自己开发的过程中,需要注意PHP安全方面的知识,以下就说一下常见安全问题。
1. SQL 注入
SQL 注入是常见网站最大的威胁之一,如果数据库受到SQL 注入的攻击,那么可以获取你全部的数据库。
当前主流的解决方法有两种。转义用户输入的数据或者使用封装好的语句。一般用一个封装好的函数,用来对用户提交的数据进行过滤。
2. XSS
XSS 又叫 CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往 Web 页面里插入恶意 html 代码,当用户浏览该页之时,嵌入其中 Web 里面的 html 代码会被执行,从而达到恶意攻击用户的特殊目的。
正确的做法是坚决不要相信用户的任何输入,并过滤掉输入中的所有特殊字符。这样就能消灭绝大部分的 XSS 攻击
3. XSRF/CSRF 跨站请求伪造
它是攻击者通过一些技术手段欺骗用户去访问曾经认证过的网站并运行一些操作。
最常用的防御方法是生成一个 CSRF 令牌加密安全字符串,一般称其为 Token,每次你在网页构造表单时,将 Token 令牌放在表单中的隐藏字段, Session 里的 Token 令牌比对,校验成功才给予通过。
如果在这些TP框架中的开源商城系统中进行二次开发,您这边需要注意的应该有以下几点。
1.设置public目录为唯一对外访问目录,不要把资源文件放入应用目录;
2.开启表单令牌验证避免数据的重复提交,能起到CSRF防御作用;
3.使用框架提供的请求变量获取方法(Request类param方法及input助手函数)而不是原生系统变量获取用户输入数据;
4.对不同的应用需求设置default_filter过滤规则(默认没有任何过滤规则),常见的安全过滤函数包括stripslashes、htmlentities、htmlspecialchars和strip_tags等,请根据业务场景选择最合适的过滤方法;
5.使用验证类或者验证方法对业务数据设置必要的验证规则;