混淆AJAX POST

时间:2011-02-21 14:57:45

标签: jquery ajax post

嘿伙计们,我正在进行AJAX POST调用 - 但是使用FireBug,您可以看到所有细节(允许人们绕过表单)。

有关混淆此POST的任何提示(或类似的内容)?

我的ajax电话:

$.ajax({
        type: "POST",
        url: "php/query.php",
        cache: false,
        data: "action=getWordsByLetter&l="+letter,
        success: function(data){
            dataArray = data.split('|');
            $('#words').html('');
            for(var i = 0; i < (dataArray.length - 1); i++) {
                $('#words').append('<li class="w">'+dataArray[i]+'</li>');
            }
        }
    });

我更愿意自己编写代码而不是依赖插件:)

3 个答案:

答案 0 :(得分:7)

首先:reCaptcha

如果绕过表单是一个主要问题,您可以随时包含reCaptcha,该表单应包含在该表单的每个帖子中。

我不知道您正在解决的情况,但这会使或多或少无法进行编程POST。

第二:客户端库

另一种方式是建议客户端库。您既可以使用客户端库,也可以轻松自己编写,也可以编写自己的代码来执行类似操作。

第三:动态字段命名

据我所知,你的表格上至少有一个字段。并且您只应在首次请求时处理此表单。你能做的是让这个字段的名字完全动态:

  1. 服务器端创建表单并为您的字段设置一些动态名称
  2. 存储名称供以后使用或在服务器上加密,并将隐藏字段存储在隐藏字段中
  3. 服务器获取数据
  4. 如果字段的名称与先前创建的名称(存储服务器端或隐藏名称中提供)匹配,则应处理它,否则只需忽略该请求。
  5. 第四:改变DOM结构

    如果存在机器人消耗结果的风险,您可以随时以各种方式更改文档的结构(更改容器元素,更改其CSS类名称,ID等)。制作一个变更列表(其中几个)和用户排列。您可以或多或少地总是在视觉上对人类产生相同的结果,但机器将难以阅读它。

    标准内容

    1. 让机器人的过程变慢,但对人类来说效果会很好(5s延迟不应该被人类所知)
    2. IP限制 - 您可以在同一位置每x分钟只允许一个请求 - 这在很大程度上取决于您的表单的性质
    3. Honeypot pattern通常过滤掉人类的机器人。

答案 1 :(得分:2)

由于混淆是客户端,任何人都可以查看您的混淆代码并篡改帖子 - 您没有获得太多收益。

保护服务器端:具有最小字长和防洪保护(仅在Y秒内接受来自客户端的X请求),并确保人们无法访问他们应该无法访问的任何数据为了它。

答案 2 :(得分:0)

实际上,我认为您应该制作服务器应用程序,以便人们绕过实际表单并不重要。

  • 输入错误或恶意?否认请求。
  • 表格是机器人多次提交的?以验证码或其他人工验证技术,洪水限制等形式添加机器人保护。
  • 表格是安全事物的一部分吗?添加请求的签名,就像使用(公共)webservice API(想到OAuth)一样

始终 - ''始终''假设您的客户端已损坏,可能是机器人,黑客等。此POST提交的服务应该不允许滥用。

混淆是通过默默无闻的安全,而不是保证不会滥用任何东西。事实上,在这种情况下,它甚至可能使您的应用程序更复杂一个数量级。为了有效,它必须“随机化”发送到服务器的密钥和值,在这种情况下,服务器本身应该知道哪个混淆密钥与哪个值匹配。事实上,我认为你不是在寻找混淆,而是在寻找加密。