0

我遇到的问题是:“我在安全方面做得太多了吗?” 或“我做的安全性太低了吗?”

首先,我需要实现一个“发布消息”功能和一个“编辑消息”功能。

这是一个基本的表结构:

id, user_id, category_id, message_title, message_content

这两种方法看起来很容易实现,但是当我想到安全性或黑客时,我开始担心......这是我担心的事情:

关于留言:

  1. 用户会在数据库中提交超长消息吗?
  2. 用户会进行 SQL 注入来破坏我的数据库吗?
  3. 用户会继续发布消息,并使我的数据库充满吗?
  4. 用户会提交无效的category_id吗?(例如,已删除或尚未出现或此用户无法使用该类别)

关于编辑消息:

  1. 用户会编辑不属于他/她的消息吗?(破解id
  2. 用户会编辑无效的消息id吗?(例如,已删除或尚未出现)
  3. 用户会在我的数据库中编辑 SQL 注入语句吗?
  4. 用户会在数据库中编辑长消息吗?
  5. 用户会编辑无效category_id吗?(例如,已删除或尚未出现或此用户无法使用该类别)

有几个问题我很担心。我可以将它分为两​​种类型:

  1. 技术安全问题。(例如SQL注入、消息长度)
  2. 程序逻辑问题。(例如,category_id不允许该用户使用)

我认为技术安全问题可以使用互联网上的一些标准库来实现,但程序逻辑问题让我抓狂。我应该实施所有检查吗?例如,在我执行相关的 SQL cmd 之前,检查 that category_idis for thatuser并检查是否id存在等。可以实现,但是非常耗时。还是我只需要假设每个输入都是有效的,并且用户不会破解category_id系统中的陌生人?请指教。

4

1 回答 1

1

正如 Paul C 所说,你永远不应该相信你的用户。或者,更确切地说,您应该相信您的用户会在数据输入中犯所有可能的错误,以及一些恶意尝试破解数据库。

编写输入验证所需的时间将远远少于修复数据库中的问题所需的时间,即使如此,您仍然必须添加输入验证以防止出现类似问题。从一开始就验证一切要容易得多。

于 2013-01-23T03:23:30.807 回答