【问题标题】:Website functionality disturbed or hacked [closed]网站功能受到干扰或被黑客入侵[关闭]
【发布时间】:2014-05-05 11:31:30
【问题描述】:

我的网站上有一个用户消息系统。 我有一个< button id="msg" data-id="1"> data-id 对应于users 表中的user_ id 列。现在我使用 ajax jquery 和 php 向用户发送消息。 通过 jquery,我得到 data-id 的点击 .msg 按钮并使用 php 向该用户发送消息。

现在我的问题是我有一些人向其他人发送消息的限制。但是那些可以通过在开发者模式下更改data-id来轻松地非法发送这些消息。我该如何防止这种情况发生?

【问题讨论】:

  • 添加服务器端验证并检查有效收件人...
  • 有很多方法可以做到这一点.. 1.基于用户 id 和 ip 地址的加密,如 stackoverflow 所做的.. 等等..
  • 但这不是太多的处理吗?主页中的第一次验证。然后再次发送小消息?像谷歌、推特这样的大公司是这样做的吗? @mark
  • 你能在答案中解释你的方法@rajaprabhu 吗?

标签: php jquery mysql ajax


【解决方案1】:

您无法阻止人们编辑您网站的 HTML,通常可以编辑任何前端。

关于限制,我不是 100% 你的意思但是,如果用户 a 不能向用户 b 发送消息,那么你必须在服务器端做。返回 false 并向用户前端显示相应的消息。

【讨论】:

  • 但这不是太多的处理吗?主页中的第一次验证。然后在发送消息时再次处理后端?像谷歌、推特这样的大公司是这样做的吗?
  • 在服务器上做一点验证一点也不难。我认为 Google 和 Twitter 在消息发送方面做了很多闭门造车的事情。
  • 为了验证,我必须说(2-4 个查询),这样做会变慢吗?
  • 完全看问题,我推荐你stackoverflow.com/questions/5203844/…
  • 查询很简单,仅从 1 列中提取 1 行!
【解决方案2】:

您始终可以使用一些服务器端生成的哈希发送到前端,以确保发送回服务器的用户 ID 是最初打开页面的用户 ID。甚至不需要为此调用数据库。

<button id="msg" data-id="1" data-hash="1234abc">

您使用盐/秘密和数据 ID 计算哈希的位置。提交后,您只需检查提供的哈希值是否与新计算的相同。

所以在 php 中你可以这样做:

$userId = 1;
$secret = 'yourVeryPersonalSecretSentence';
$hash = sha1($secret . $userId); // would create something like "d0be2dc421be4fcd0172e5afceea3970e2f3d940"

在您的 html 中,您将拥有:

<button id="msg" data-id="1" data-hash="d0be2dc421be4fcd0172e5afceea3970e2f3d940">

在 ajax 调用时,您只需仔细检查:

$userId = $idValueFromForm;
$secret = 'yourVeryPersonalSecretSentence';
$hash = $hashFromForm;

$newHash = sha1($secret . $userId);
if ($newHash === $hash) { // the userid was the same as sent to the browser
...
}

希望这会有所帮助。

【讨论】:

  • 你能举个例子吗?听起来很有趣。
  • 一个非常简单的版本可能是在您的 id 中添加一个秘密字符串,并计算 MD5 或 SHA1 或任何哈希值。在您使用的编程语言中应该有一种方法。
  • 在 php 中,我创建了一个 hash 并将其与 data-id 一起发送,但黑客也可以更改 hash
  • 好吧,既然他不知道你的秘密,他将无法创建相同的哈希值,因为随机创建相同的哈希值是非常不现实的。
  • 我如何创建哈希值?
【解决方案3】:

您总是必须假设可能会出现问题,即人们想要入侵您的网站,或者想要进行 SQL 注入。

您必须仔细检查所有内容,甚至进行额外验证以确保您的应用程序是安全的。目前任何人都可以创建简单的脚本向所有用户发送消息,因此这是一个巨大的安全问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多