我正在寻找在我们的移动应用程序中使用验证码的替代方案。我们正在iOS和Android上编写移动应用程序。 Web应用程序已经存在。在网页中,我们使用验证码来确保只有正版客户才能应用并防止拒绝服务类型攻击。
因此,从移动应用程序中我们还需要处理这些问题。任何身体都遇到过同样的情况?是否建议在原生移动应用程序中使用验证码?
答案 0 :(得分:2)
必须使用防止自动流量的机制。不这样做意味着您将允许一种可以自动访问服务器的方法。尽管您可能认为它只能通过移动应用程序获得,但攻击者代码可以在任何地方运行并使您的系统停止运行。
如果您担心验证码对移动用户不方便,请尝试使用Google Recaptcha。通常情况下,点击复选框或点击某些图片,在某些情况下谷歌无法根据复选框确定。
答案 1 :(得分:2)
有一个使用google recaptcha的android库 https://github.com/ayltai/Android-Lib-reCAPTCHA
reCAPTCHA Android库提供了一种在Android应用中将CAPTCHA显示为ImageView
的简单方法,可帮助您阻止机器人滥用它。该库包装了reCAPTCHA API。
首先,你必须sign up for your API keys。
<强>安装强>
repositories {
jcenter()
}
dependencies {
compile 'android.lib.recaptcha:reCAPTCHA:+'
}
布局
要显示CAPTCHA图像,您需要在布局XML中添加<android.lib.recaptcha.ReCaptcha />
元素:
android.lib.recaptcha.ReCaptcha
android:id="@+id/recaptcha"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerInside" />
使用android:scaleType="centerInside"
来确保显示整个CAPTCHA图片非常重要。
或者,您可以在运行时创建android.lib.recaptcha.ReCaptcha
的实例:
ReCaptcha reCaptcha = new ReCaptcha(context);
如何显示CAPTCHA
在包含android.lib.recaptcha.ReCaptcha
的活动/片段/视图中,您需要显示一个CAPTCHA图片供用户回复:
ReCaptcha reCaptcha = (ReCaptcha)findViewById(R.id.recaptcha);
reCaptcha.showChallengeAsync("your-public-key", onShowChallengeListener);
showChallengeAsync
下载并异步显示CAPTCHA图像。在UI线程中调用是安全的。如果此调用出现任何错误,则不会抛出任何异常。所有错误都将被视为显示CAPTCHA图片失败。
onShowChallengeListener
是ReCaptcha.OnShowChallengeListener
的一个实例,在尝试显示CAPTCHA时会调用该实例。
此方法的同步版本为showChallenge
。
如何验证用户输入
要验证用户输入,请将输入字符串传递给ReCaptcha.verifyAnswerAsync
(或ReCaptcha.verifyAnswer
):
reCaptcha.verifyAnswerAsync("your-private-key", "user-input", onVerifyAnswerListener);
verifyAnswerAsync
异步将用户输入字符串提交给reCAPTCHA服务器进行验证。在UI线程中调用是安全的。如果此调用出现任何错误,则不会抛出任何异常。所有错误都将被视为验证失败。
onVerifyAnswerListener
是ReCaptcha.OnVerifyAnswerListener
的一个实例,在完成验证用户输入的尝试时会调用该实例。
此方法的同步版本为verifyAnwser
。
指定区域设置
您可以强制窗口小部件以特定语言呈现。请参阅this page。
reCaptcha.setLanguageCode("fr");
https://github.com/ayltai/Android-Lib-reCAPTCHA/tree/master/reCAPTCHA-Samples提供了完整的示例应用程序。