【问题标题】:Prevent users from being able to access a webpage via web browser?阻止用户通过网络浏览器访问网页?
【发布时间】:2011-02-09 08:07:28
【问题描述】:

我和我的朋友正在开发一个程序。该程序将向我们的网页提交 GET 数据。但是,我们不希望用户通过程序以外的任何其他方式访问该网页。我们可以阻止用户使用 HWID 身份验证共享程序,但没有什么能阻止他们使用数据包扫描器获取网页的 URL。我们考虑过将实施的用户代理身份验证,但用户代理很容易被欺骗。

所以我的问题是,我们如何防止用户直接访问网页,而不是通过程序?

即使你没有一个完全有效的答案,任何有助于阻止他们的东西都会很好。

目前我们将实施:

HWID Authentication 使用程序 访问网页的用户代理身份验证 在没有适当的用户代理的情况下访问网页的任何人的即时 IP 黑名单

【问题讨论】:

  • 我不知道您正在构建什么样的应用程序,但我会仔细考虑是否真的需要阻止人们通过其他客户端访问我的服务,如果我这样做了,我的商业模式是否有问题。无论您做什么,以一种安全的方式实现它都将花费大量时间并且成本高昂。真的有必要吗?
  • @Pekka:嗯,我不希望我的产品被泄露并公开。如果我使用一个简单的网页,不做任何认证方法,人们就不必购买产品。如果我为其添加用户名和密码,用户名和密码将被共享。
  • 我不知道你的目标市场,但我认为提供登录是你能做的最好的。如果您看到可疑活动(例如,同一帐户在同一小时内从三个不同的国家/地区登录),您可以关闭该帐户。谁在乎他们使用什么客户端?如果是任何类型的商业软件,您的大多数客户都会害怕提供他们的个人登录凭据。
  • 您应该专注于制作好的软件,而不是防止人们窃取您的应用程序。游戏编辑多年来一直试图锁定用户,他们的保护在几天内仍然被打破。如果您的应用程序有用,人们会购买它,有些人会窃取它。

标签: php vb.net user-agent hardware-id


【解决方案1】:

不要依赖用户代理或任何类型的浏览器指纹,HTTP 标头很容易伪造/欺骗。

您可以在请求中添加一些秘密令牌(例如密码/登录名)并通过 SSL 发送以防止窃听。

或者更好的是,使用 SSL 客户端证书。

编辑您要分发 VB 程序吗?如果是这样,正如 bobince 所提到的,您无法阻止坚定的黑客伪造请求。您可以提高标准,但这将是默默无闻的安全。即使使用客户端证书,黑客也能够从您的程序中提取证书并发送修改后的请求。

只要你接受来自客户端的请求,这些请求就可以被伪造。处理它。

【讨论】:

  • 是的,我们考虑过使用 SSL,但我对此一无所知,也不知道如何通过 SSL 访问页面
  • 是的,我想。或者我可以使用谷歌,那里的一切都是免费的。
  • +1 加密通信是我能想到的唯一中途安全的方法。
  • 当然你永远不会赢。一旦您将软件副本提供给其他人,他们就会在其中包含连接到服务器所需的任何信息(如客户端证书)。
  • @Rob:这取决于你的时间值多少钱。
【解决方案2】:

一个选项是您可以在请求标头中设置加密令牌。

令牌只能使用一次。如果再次发送相同的令牌,服务器将拒绝它,这意味着您必须在服务器端维护已使用令牌的副本。

【讨论】:

  • 维护副本很容易,我将简单地使用 MySQL 数据库。无论如何我都需要为 IP 黑名单这样做
  • 这不是比 SSL 更好的方法吗?因为加密逻辑在应用程序内部。如果 ppl 反编译代码,我们无能为力!\ 这也是一个便宜的解决方案.. 而不是投资 SSL 证书!
  • 好点。一次性算法可能有一天会被逆向工程,但使用的加密密钥也可能会被逆向工程。
【解决方案3】:

一个选项是使用并验证 Web 浏览器不发送的自定义标头,我为自己的程序做了类似的事情。在您正在执行的其他验证之上执行此操作。在服务器端,让您的服务器脚本验证自定义标头并在标头错误时简单地重定向

【讨论】:

  • 听起来不错,您能否详细说明如何让网页检查标题?也许还详细说明如何发送自定义标头。我做 PHP,我的朋友做 VB.Net
  • 安全通过默默无闻...如果有人拦截请求并看到该自定义标头会发生什么?
  • 在 php 中,在您的程序应该读取的页面中,使用公共数组 HttpRequest::getHeaders () 来获取标题并检查/更改名称和值,以 vb 为单位。 net 使用请求对象添加标头,您不会将任何自定义标头返回给程序,如果标头检查失败,您只需重定向
  • 重点是恶意客户端可以轻松复制这些标头。它们并没有真正增加安全性。
【解决方案4】:
  • 尝试使用长密钥(512 位或更多)加密您的所有网页,使用 HWID 作为盐。

    这样只有你的程序可以解码并呈现为网页。

    en.wikipedia.org/wiki/Salt_%28cryptography%29

  • 这里是 C# 和 VB.net:

    obviex.com/samples/hash.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2015-12-25
    • 2013-02-14
    • 2012-08-25
    • 1970-01-01
    相关资源
    最近更新 更多