【问题标题】:How do I properly protect my webserver from spoofed requests?如何正确保护我的网络服务器免受欺骗请求?
【发布时间】:2017-07-12 18:38:54
【问题描述】:

如果这个问题含糊不清或以前曾被问过,我深表歉意 - 我对我试图问什么以寻找答案的了解不够。

我正在为响应 HTTPS 请求的游戏创建后端服务器。这个游戏在这一点上相当简单——你有一些统计数据和一个可以通过各种方式检查和修改的库存。我想为此创建一个 Web 界面,这将允许您执行一些涉及修改角色数据的重要操作(升级、分配统计点、管理库存等)但是,我有一个问题!我担心人们偷看这个网页的源代码,拼凑一些命令,例如,将一个点添加到一个统计数据或一个项目到你的库存中,然后将该命令“欺骗”到我的服务器,允许他们不公平地修改他们的角色数据。

将商品添加到库存的 HTTPS 请求可能如下所示(将其想象为按钮或其他内容的 onClick):

<button onClick=makeRequest("mydomain/characters/myCharacterName/add_inventory?Stick=1")>Get Stick</button>

您可以看到将这段代码分开并以其他方式使用它是多么简单。我怎样才能在网页中提供这种功能,而不放弃利用它的能力?我考虑了一些选项,但似乎没有一个可行。我觉得答案可能与将请求的哈希作为某种可赎回的“令牌”包括在内有关,但我不确定。对此的任何意见将不胜感激,因为我相信这是一个相当基本的概念,现在和将来都会对我有所帮助。

【问题讨论】:

  • 服务器端不应该有一个逻辑知道哪些操作是可能的——因此不可能做任何其他事情。

标签: security web hash server client


【解决方案1】:

您应该使用JSON web tokens 等身份验证机制对您网站的所有请求进行身份验证。

您还应该通过验证所有输入(例如 url 参数)来保护您的 Web 服务器。如果您的 Web 服务器访问数据库服务器,那么它应该使用准备好的 SQL 查询。这应该可以保护您的服务器免受 SQL 注入。

【讨论】:

  • 感谢您的回答。在了解了 JWT 之后,我能够充分理解这个问题,从而找到更多关于这个主题的信息。我关注的特定漏洞称为“重放”或“回放”攻击。可以通过引入一些“有状态”措施来解决它接受一段时间后发行的代币。无状态解决方案会很好,但似乎没有。
猜你喜欢
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 2017-12-04
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多