我认为从四个方面可以做基本的安全性:视图交互、网络传输、后端和数据库。
1. 视图交互这块儿,很多人的第一课是法律,第二课就是不要信任任何视图层的操作。最常见的手段就是在提交到后端前进行数据合法性(或者说规范性)的校验。比如有一个手机号输入的表单,不可能一个1都能被提交,或者a之类的。根据当地的号码规则写合适的脚本可以在这一层筛掉很多恶意的东西。
2. 网络传输:这个东西是在传输的时候被抓包后篡改了数据导致的,要预防,最关键的一点是对数据进行加密,尽量不使用明文传输。
3. 后端:就和我提到的“不要信任任何视图层的操作”一样,这个道理对于后端来说,可以是不要信任任何其他端传来的数据。就比如上面的手机号,前端有校验后端一样要有。如果没有,那对于别有用心的人来说,是不是可以把前端校验绕过去提交数据呢?
4. 数据库:这个也是我见过的最多的问题的。生产环境用的是云服务器,然后数据库给的还是root权限。整个数据库层面的防护只有云服务器厂商+一道密码,这意味着一旦搞事的人拿到了数据库密码,比如程序本身通过jdbc连接数据库,一旦从逻辑层面进入到数据库,那就是一场灾难。就比如以前的sql注入select * from t where 1 = 1;delete from t;所以合适的用户权限也是很重要的。