系统内部,方法之间调用,是否还需要验证数据?
一直有个疑惑,在用户输入数据时,我们后端肯定是要验证数据格式的,这毫无疑问。
但是,在系统内部,各个模块的方法
之间互相调用时,是否还需要进行数据验证?比如is_int($age)
、$age>0
等?主要是考虑到以下几个点:
1.不能信任其他开发人员调用我写的方法时,传入的参数。如果别的开发传入一个我预料之外的值,那么系统肯定会报错的。
2.由于某个数据库字段被别的开发人员做的模块修改,而这个修改后的值是我预料之外的值,在调用方法时,系统也会报错。
所以,想听听大家的意见,有必要每个方法里面都验证数据格式吗?
我会选择做数据验证,这样可以提高程序的健壮性,避免系统出现异常。
就像你说的,前端用户输入的数据是一定要验证的,为什么?因为那些数据都不可控。同样,内部系统之间的调用实际也是不可控的因素有太多了,所以也是需要做验证的。