如何在我的Android应用程序中使用用户自己的短信服务发送OTP并进行手机号码验证?

问题描述 投票:0回答:2

我创建了一个小方法来做到这一点。

首先我生成了一个小的随机6位数字代码(OTP)

如下
int otp = new Random().nextInt(900000) + 100000;

那么, 我将此 OTP 发送到我必须验证的用户输入的手机号码, 我正在使用用户自己的短信服务来执行此操作

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(user_mobile.getText().toString(),null,"Otp for verification is: "+otp,null,null);

那么, 我创建意图,启动新活动并将 OTP 传递给新活动

Intent itn = new Intent(MainActivity.this,OtpPage.class);

itn.putExtra("Otp",s_otp); 

startActivity(itn);

然后, 我只是让用户输入他从短信收到的 OTP,并使用我从之前的活动中使用 Intent 收到的 OTP 进行验证,如果两者相同,我会验证手机号码,

现在我的问题是,这是执行此操作的有效方法还是包含一些安全缺陷, 如果是的话,这里可能会出现什么安全问题?

java android security android-security
2个回答
0
投票

这并没有什么问题。这是安全的。这是因为 Android 只会认为您正在发送短信而没有其他任何事情。其他应用程序也使用它。由于 Firebase Auth 在网页上显示 reCaptcha,因此许多应用程序都这样做了。

但是您创建 OTP 的方法是错误的。

你可以用这个代替

private int createOtp(){
    int otp = new Random().nextInt(9) + new Random().nextInt(9) + 
              new Random().nextInt(9) + new Random().nextInt(9) + 
              new Random().nextInt(9) + new Random().nextInt(9);

    return otp;
}

现在可以这样分配 ->

int otp = createOtp();


0
投票

你好,Umesh kaise ho tum。 Randi bawah 或 chhinar bhi ho tumhare 编号 PE ak OTP gya hoga batao madarchodo。

© www.soinside.com 2019 - 2024. All rights reserved.