Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们如何在iOS应用程序中集成验证码?_Ios_Iphone_Ipad_Captcha_Recaptcha - Fatal编程技术网

我们如何在iOS应用程序中集成验证码?

我们如何在iOS应用程序中集成验证码?,ios,iphone,ipad,captcha,recaptcha,Ios,Iphone,Ipad,Captcha,Recaptcha,我在谷歌上搜索了iOS应用程序中的集成,但没有找到任何相关的方法。甚至我注册并搜索验证码插件是否可用于iOS?我在那里没有找到任何iOS插件。在RND的某个时候,我知道“移动应用程序不需要验证码”,但客户希望在其应用程序中使用验证码,因此,我想知道:- 我们是否可以在iOS应用程序/移动应用程序中集成验证码:- 如果是那么整合它的相关方式是什么呢 如果没有那么相关的原因是什么呢 虽然我们在iOS中没有任何验证码API,但即使是reCaptcha也没有为iOS提供任何插件。甚至很多人都建议我,

我在谷歌上搜索了iOS应用程序中的集成,但没有找到任何相关的方法。甚至我注册并搜索验证码插件是否可用于iOS?我在那里没有找到任何iOS插件。在RND的某个时候,我知道“移动应用程序不需要验证码”,但客户希望在其应用程序中使用验证码,因此,我想知道:-

  • 我们是否可以在iOS应用程序/移动应用程序中集成验证码:-

  • 如果是那么整合它的相关方式是什么呢

  • 如果没有那么相关的原因是什么呢


虽然我们在iOS中没有任何验证码API,但即使是reCaptcha也没有为iOS提供任何插件。甚至很多人都建议我,没有必要为移动应用程序实施验证码。我同意,但由于客户听不到任何借口,我所做的是

  • 简单地说,我使用

    -(NSInteger)randomint介于:(NSInteger)min和:(NSInteger)max之间
    { 
    返回(NSInteger)(最小值+arc4random_均匀(最大值+1-min));
    }

    将该号码放在标签上,并要求用户在提供的文本字段中输入相同的号码,如果找到匹配项,则验证码的主体已完成[另一端的用户是人类,是集成验证码的唯一主体],另一方面,我重新生成随机数,并将其再次放在标签上,要求用户在提供的文本字段中输入相同的数字。
    最终结果是这样的


  • 现在您的想法可能更清楚了,只需将函数“randomIntBetween”的输出分配给显示数字的标签,当用户按下登录按钮时,验证textField(名为:Enter number)中的文本是否与其左侧的标签匹配,如果匹配,则允许用户登录,如果不匹配,则清除文本字段的文本以及标签上的文本,然后通过调用方法“RandomIntBeween:”将新的随机数分配给左侧的标签,并要求用户在输入数字文本字段中输入文本

    虽然在某些应用程序中不需要添加验证码,因为应用程序不像Web,因此,根据我的想法,在某些应用程序中不需要附加验证码来防止僵尸程序,但如果需要嵌入验证码。。。 是的,这是可能的方法,请检查以下代码:

    以这些出口和变量为例:

    NSArray *arrCapElements;
    IBOutlet UILabel *Captcha_label;
    IBOutlet UITextField *Captcha_field;
    IBOutlet UILabel *Status_label;
    
    iActions
    作为:

    - (IBAction)Reload_Action:(id)sender;
    - (IBAction)Submit_Action:(id)sender;
    
    在情节提要中,为
    验证码标签选择字体名为Chalkduster 30.0

    现在将
    viewDidLoad()
    中的
    arrCapElements
    分配为

    arrCapElements = [[NSArray alloc]initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"a",@"b",@"c",@"d",@"e",@"f",@"g",@"h",@"i",@"j",@"k",@"l",@"m",@"n",@"o",@"p",@"q",@"r",@"s",@"t",@"u",@"v",@"w",@"x",@"y",@"z",@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z", nil];
    
    加载验证码的代码:

    -(void)load_captcha{
        @try {
            CGFloat hue = ( arc4random() % 256 / 256.0 );  //  0.0 to 1.0
            CGFloat saturation = ( arc4random() % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from white
            CGFloat brightness = ( arc4random() % 128 / 256.0 ) + 0.5;  //  0.5 to 1.0, away from black
            Captcha_label.backgroundColor = [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];
            //Captcha_label.textColor=[UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];
            NSUInteger elmt1,elmt2,elmt3,elmt4,elmt5,elmt6;
            elmt1 = arc4random() % [arrCapElements count];
            elmt2= arc4random() % [arrCapElements count];
            elmt3 = arc4random() % [arrCapElements count];
            elmt4 = arc4random() % [arrCapElements count];
            elmt5 = arc4random() % [arrCapElements count];
            elmt6 = arc4random() % [arrCapElements count];
    
            NSString *Captcha_string = [NSString stringWithFormat:@"%@%@%@%@%@%@",arrCapElements[elmt1-1],arrCapElements[elmt2-1],arrCapElements[elmt3-1],arrCapElements[elmt4-1],arrCapElements[elmt5-1],arrCapElements[elmt6-1]];
            //NSLog(@" Captcha String : %@",Captcha_string);
            Captcha_label.text = Captcha_string;
        }
        @catch (NSException *exception) {
            NSLog(@"%@",exception);
        }
    }
    
    重新加载操作:

    - (IBAction)Reload_Action:(id)sender {
    
        [self load_captcha];
    }
    
    检查验证码是否正确:

    - (IBAction)Submit_Action:(id)sender {
    
        NSLog(@"%@ = %@",Captcha_label.text,Captcha_field.text);
        if([Captcha_label.text isEqualToString: Captcha_field.text]){
            [self.view endEditing:YES];
            Status_label.text =@"Success";
            Status_label.textColor = [UIColor greenColor];
        }else{
            Status_label.text =@"Faild";
            Status_label.textColor = [UIColor redColor];
        }
    }
    
    它将显示如下:


    帮助摘自:

    对于我的,我使用以下库:


    它将使用一个隐藏的webview来处理该问题

    向客户端解释为什么它不适用于移动应用程序…@Wain:现在我只能这样做:)创建一个机器人来抓取web(包括web应用程序)和提交表单相对简单。这就是经典验证码解决方案的用武之地。我们不需要在本机应用程序中生成验证码。为什么我们需要验证码来避免垃圾邮件,不幸的是,我听说没有一个机器人会在本机应用程序中发送垃圾邮件。@SaadChaudhry(y):)我是一名渗透测试人员,在大型国际公司的主要项目中有8年的工作经验。我还为他们开发了大型网络和移动应用程序以及后端服务。我在这里告诉大家,“手机应用不需要验证码”的谣言必须停止!客户端应用程序,无论是浏览器中的HTML/JS还是Android上的APK,都与HTTP服务交互,易受攻击的是HTTP服务本身,而不是与之交互的客户端应用程序!我个人已经在主要方面泄露了许多API,因为这不是验证码。它看起来像验证码,但不提供任何保护。应在服务器上验证reCAPTCHA,我在您的回答中看不到它。这不是验证码。它看起来像一个验证码,但没有提供任何保护。这是无用的,如果有人嘲笑你的web服务,我不太确定这个隐藏的webview ReCaptcha解决方案,为了让ReCaptcha工作,它需要跟踪用户的行为,使用这个解决方案,我不知道这将如何发生,因此,我假设挑战将显示99.99%的用户times@WaqlehReCapatcha的理念是保护您的服务器免受垃圾邮件或不规则的点击。因此,即使您将其与隐藏的WV一起使用,它也不会为普通用户/设备显示很多内容。顺便说一句:我尝试过,90%的点击率根本没有出现。很高兴知道它并不总是显示挑战,我没有尝试过这个库,我知道recaptcha用于阻止垃圾邮件和ddos攻击。。。在任何情况下,即使它显示100%的时间,它总比没有一个好。更好的解决方案是使用短信验证,如what telegram和whatsapp等。我认为,短信验证还不够,有时黑客可以使用“在线假号码”进行验证,并模拟相同的查询来攻击您或访问您的数据,使用令牌或您在短信验证后提供的任何东西,,,祝你好运,兄弟。攻击总是有办法的,有志者事竟成,假号码可以被发现,gmail、facebook和其他网站已经可以非常有效地做到这一点,短信验证是行业标准,这并不意味着它是防弹的,什么都不是,您应该始终尝试在用户体验和安全性之间取得平衡,否则您肯定会丢失转换。