您如何实现有效和安全的功能?

时间:2013-01-22 15:19:16

标签: web-applications security

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

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

这是一个基本的表结构:

id, user_id, category_id, message_title, message_content

这两种方法似乎很容易实现,但是当我考虑安全性或黑客时,我开始担心......这是我担心的事情:

关于发布消息:

  
      
  1. 用户是否会在数据库中提交超长消息?
  2.   
  3. 用户是否会进行SQL注入以分解我的数据库?
  4.   
  5. 用户是否会继续发布消息,并使我的数据库已满?
  6.   
  7. 用户是否会提交无效category_id? (例如,已删除或尚未显示或此用户无法使用该类别)
  8.   

关于编辑邮件:

  
      
  1. 用户是否会编辑不属于他/她的邮件? (破解id
  2.   
  3. 用户是否会编辑包含无效id的邮件? (例如,已删除或尚未显示)
  4.   
  5. 用户是否会在我的数据库中编辑SQL注入语句?
  6.   
  7. 用户是否会在数据库中编辑长消息?
  8.   
  9. 用户是否会修改无效的category_id? (例如,已删除或尚未显示或此用户无法使用该类别)
  10.   

我担心的一些问题。我可以将它分为两​​种类型:

  1. 技术安全问题。 (例如,SQL注入,消息长度)
  2. 程序逻辑问题。 (例如,category_id不允许该用户使用)
  3. 我认为技术安全问题可以通过Internet上的某些标准库来实现,但程序逻辑问题让我发疯。我应该执行所有检查吗?例如,在执行相关的SQL cmd之前,请检查category_id是否为user,并检查id是否存在等。它可以实现,但它非常耗时。或者我只需要假设每个输入都是有效的,并且用户不会破解系统中的奇怪category_id?请指教。

1 个答案:

答案 0 :(得分:1)

正如Paul C所说,你永远不要相信你的用户。或者,您应该相信您的用户将在数据输入中犯下所有可能的错误,以及一些恶意企图破解数据库。

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