如果开发一个play框架的模块,需要考虑这几项工作内容,这是一个思考的框架,总结如下。
1、本模块的输入、输出参数集合,将输入、输出参数对象规划好,做成易扩展模式,比如用对象代替参数,用map代替对象也可以,看情况使用。
2、可共用的代码逻辑该放在哪个位置?尽量自己建立一个包,将不常变的或者需要共用的函数方法写在一起,传入传出参数使用参数,尽量用私有变量来做计算,不用公共变量。考虑到一些性能方面的原因,例如一个循环中处理多种逻辑等等,这些地方需要小心一点。先保证逻辑的正确性,然后再考虑是否可以再做优化。
例如一个简单的保存界面,(1)前端界面要做一遍验证以外,(2)保存时后台需要将入口参数再做一遍验证。有时这两类验证都是需要在后台完成,这就要求验证方法能共用,禁止写两套代码验证同一段逻辑,这是非常危险的。
3、后台随时考虑防止前端传入的数据被篡改,因此验证就变的更加重要,每一个入口参数尽量使用特定的数据类型,不要用String存日期,防止脏数据进来,如果非要用,注意做好验证工作。另外一些SQL注入就不必再说了。
4、前端的脚本注入问题,这是一个比较复杂的问题。目前我们做的网站都是无状态模式,因此这类验证问题大都都放到后台处理了。如果是前段需要处理,就需要将入口参数做统一的转码,防止注入脚本。具体我记得同事做过这方面的研究,内容非常多。例如有一种攻击,叫做二次攻击,就是说找一个漏洞,将脚本存入数据库字段,然后后台程序在读数据库时未做验证,导致脚本被注入,如果这真的非常重要,那就需要想办法防范了。
5、公共函数放在哪个位置,与别的模块是否可能存在命名冲突等。例如play框架模块中的命名方式一般采用“含义.模块名”的方式。例如enums.modulename。