代码之家  ›  专栏  ›  技术社区  ›  larryq

防止HTML表单篡改的文档/链接?

  •  1
  • larryq  · 技术社区  · 16 年前

    我正在使用asp.net,但我的问题比这更一般。我感兴趣的是阅读一些策略,防止用户为了更新不属于他们的记录而欺骗他们的html表单值和链接。

    例如,如果我的应用程序处理二手车,并有添加/删除库存的链接,其中包括作为url的一部分的用户id,我可以做些什么来拦截试图篡改链接并将其他人的id放在其中的尝试?在这个有限的例子中,我总是可以在服务器上运行一个检查,以确保用户id xyz实际上拥有car abc的权限,但是我很好奇还有什么其他策略可以让聪明人远离。(也许是检查一下这一页吧?不确定。

    谢谢你的意见。

    2 回复  |  直到 16 年前
        1
  •  1
  •   rook    16 年前

    您描述的以下是一个名为“不安全的直接对象引用”的漏洞,在 The OWASP top 10 for 2010 .

    我能做些什么来阻止 咀嚼链接,把别人的 有身份证吗?

    有几种方法可以解决此漏洞。首先是将用户的主键存储在 session variable 所以你不必担心它被攻击者操纵。对于以后的所有请求,特别是更新用户信息(如密码)的请求,请确保选中此会话变量。

    下面是我正在描述的安全系统的一个示例:

    "update users set password='new_pass_hash' where user_id='"&Session("user_id")&"'";
    

    编辑:

    另一种方法是 Hashed Message Authentication Code . 这种方法比使用会话安全得多,因为它引入了一种新的暴力攻击模式,而不是同时避免问题。hmac允许您查看一条消息是否被不知道该秘密的人修改过。 key . hmac值可以在服务器端按如下方式计算,然后存储为隐藏变量。

    hmac_value=hash('secret'&user_name&user_id&todays_date)
    

    其思想是,如果用户试图更改其用户名或用户id,则hmac_值将无效,除非攻击者能够获取“机密”,这可以被粗暴地强制。 同样,你应该不惜一切代价避免使用这个安全系统。 尽管有时你没有选择(在你的示例漏洞中确实有选择)。

        2
  •  1
  •   gingerbreadboy    16 年前

    你想知道如何使用会话。

    Sessions on tiztag.

    如果你跟踪用户会话,你不需要一直查看url来找出是谁在发出请求/帖子。

    推荐文章