我问过自己这个问题,因为我很少看到有人在后台检查用户输入的长度。我一般应该这样做吗?
我总是使用PHP的htmlentities()
函数验证用户输入,以防止XSS,但是我也应该检查字符串长度吗?
我想,在插入数据库时,这最多可能会导致数据库错误,但是否存在任何真正的安全问题?
在数据库中存储数据时,列有限制。在尝试存储数据之前,最好先验证字段的长度。否则,你将不得不处理这些异常,甚至更糟的是,向用户返回意外错误,而不给他们修复错误的机会
如果存储数据没有限制,则无需验证文本字段的长度。尽管您需要注意数据库所施加的限制。
例如,
- 要对ORACLE没有限制,您需要使用BLOB。VARCHAR的硬限制为4000字节
- PostgreSQL没有相同的限制——没有限制的VARCHAR类似于TEXT列
- 在MariaDB上,VARCHAR最多可以有8000个字节
说到安全性,我看不出长度有任何问题,如果你有一个接受BLOB/TEXT的公共表单,添加一个含义限制可能是个好主意,但这不是一个要求。无论如何,你必须添加一个captcha来避免机器人。
在简历中,如果需要,请在后端添加限制,并注意存储系统施加的限制。