GroundControl——主要用于调试 SSRF、blind XSS、XXE 漏洞的工具集

GroundControl——主要用于调试 SSRF、blind XSS、XXE 漏洞的工具集

iOS 的远程配置

注意:该项目不再维护。

许多开发人员没有意识到他们被允许远程控制其应用程序的行为(前提是应用程序没有下载任何新代码)。

GroundControl 为您提供了一种极其简单的方法来远程配置您的应用程序,允许您添加功能标志、即兴A/B 测试或简单的“每日消息”等内容。

它建立在AFNetworking之上,并提供单一类别NSUserDefaults(只需添加#import "NSUserDefaults+GroundControl.h"到您想要使用它的任何文件的顶部)。

客户端代码

NSURL *URL = [NSURL URLWithString:@"http://example.com/defaults.plist"];
[[NSUserDefaults standardUserDefaults] registerDefaultsWithURL:URL];

…或者如果您需要成功/失败的回调,并且不想听NSUserDefaultsDidChangeNotification

NSURL *URL = [NSURL URLWithString:@"http://example.com/defaults.plist"];
[[NSUserDefaults standardUserDefaults] registerDefaultsWithURL:URL
  success:^(NSDictionary *) {
    // ...
} failure:^(NSError *) {
    // ...
}];

…或者如果您需要使用除 GET 之外的 HTTP 方法,或者需要设置任何特殊标头,请指定NSURLRequest

NSURL *URL = [NSURL URLWithString:@"http://example.com/defaults.plist"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
[[NSUserDefaults standardUserDefaults] registerDefaultsWithURLRequest:request
  success:^(NSURLRequest *, NSHTTPURLResponse *, NSDictionary *) {
    // ...
} failure:^(NSURLRequest *, NSHTTPURLResponse *, NSError *) {
    // ...
}];

服务器代码

GroundControl 异步下载并读取远程 plist 文件。这可以是静态文件,也可以是动态生成的,如以下示例所示(另请参阅 中的完整 Sinatra 应用程序example/server):

红宝石

require 'sinatra'
require 'plist'

get '/defaults.plist' do
  content_type 'application/x-plist'

  {
    'Greeting' => "Hello, World",
    'Price' => 4.20,
    'FeatureXIsLaunched' => true
  }.to_plist
end

Python

from django.http import HttpResponse
import plistlib

def property_list(request):
    plist = {
         'Greeting': "Hello, World",
         'Price': 4.20,
         'FeatureXIsLaunched': True,
         'Status': 1
    }

    return HttpResponse(plistlib.writePlistToString(plist))

Node.js

var plist = require('plist'),
    express = require('express')

var host = "127.0.0.1"
var port = 8080

var app = express()

app.get("/", function(request, response) {
        response.send(plist.build(
            {
                'Greeting': "Hello, World",
                'Price': 4.20,
                'FeatureXIsLaunched': true,
                'Status': 1
            }
        ).toString())
})

app.listen(port, host)

国内下载链接

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享