miniOrange OTP Login, Verification and SMS Notifications Security & Risk Analysis

wordpress.org/plugins/miniorange-otp-verification

OTP Verification via Email/SMS/WhatsApp,SMS Notifications for WooCommerce,OTP Login with Phone,PasswordLess Login.Custom Gateway for OTP Verification

6K active installs v5.4.9 PHP 5.3.0+ WP 3.5+ Updated Mar 27, 2026
email-verificationotpotp-loginphone-verificationsms-notifications
100
A · Safe
CVEs total1
Unpatched0
Last CVENov 14, 2023
Safety Verdict

Is miniOrange OTP Login, Verification and SMS Notifications Safe to Use in 2026?

Generally Safe

Score 100/100

miniOrange OTP Login, Verification and SMS Notifications has a strong security track record. Known vulnerabilities have been patched promptly.

1 known CVELast CVE: Nov 14, 2023Updated 10d ago
Risk Assessment

The miniorange-otp-verification plugin version 5.4.8 presents a mixed security posture. On the positive side, the plugin demonstrates strong adherence to secure coding practices, with a high percentage of SQL queries using prepared statements and output being properly escaped. The presence of numerous nonce and capability checks further indicates an effort to secure its functionality.

However, significant concerns arise from the static analysis. The plugin exposes 37 AJAX handlers, of which 4 lack authentication checks. This is a critical finding, as it opens a potential avenue for unauthorized actions if these handlers are exploitable. The taint analysis also reveals 2 high-severity flows with unsanitized paths, which, when combined with the unprotected AJAX handlers, could lead to severe security issues such as privilege escalation or data breaches. The existence of one past medium-severity vulnerability, particularly related to missing authorization, reinforces the concern about the unprotected entry points.

In conclusion, while the plugin employs many good security practices, the presence of unprotected AJAX handlers and high-severity taint flows creates a notable risk. The vulnerability history, though currently clear, suggests a past weakness in authorization that might be echoed in the current unprotected handlers. Addressing the unprotected AJAX endpoints and investigating the high-severity taint flows is paramount to improving the plugin's security.

Key Concerns

  • AJAX handlers without auth checks
  • High severity taint flows with unsanitized paths
  • Past medium severity vulnerability (Missing Authorization)
Vulnerabilities
1

miniOrange OTP Login, Verification and SMS Notifications Security Vulnerabilities

CVEs by Year

1 CVE in 2023
2023
Patched Has unpatched

Severity Breakdown

Medium
1

1 total CVE

CVE-2023-47776medium · 4.3Missing Authorization

miniorange otp verification <= 4.2.1 - Missing Authorization via dismiss_notice

Nov 14, 2023 Patched in 4.2.2 (70d)
Version History

miniOrange OTP Login, Verification and SMS Notifications Release Timeline

v5.4.9Current
v5.4.8
v5.4.7
v5.4.6
v5.4.5
v5.4.4
v5.4.3
v5.4.2
v5.4.1
v5.4.0
v5.3.8
v5.3.7
v5.3.6
v5.3.5
v5.3.4
v5.3.3
v5.3.2
v5.3.1
v5.3.0
v5.2.9
Code Analysis
Analyzed Mar 16, 2026

miniOrange OTP Login, Verification and SMS Notifications Code Analysis

Dangerous Functions
0
Raw SQL Queries
1
28 prepared
Unescaped Output
155
1935 escaped
Nonce Checks
98
Capability Checks
70
File Operations
0
External Requests
1
Bundled Libraries
0

SQL Query Safety

97% prepared29 total queries

Output Escaping

93% escaped2090 total outputs
Data Flows
4 unsanitized

Data Flow Analysis

7 flows4 with unsanitized paths
show_addon_list (helper\class-miniorangegateway.php:146)
Source (user input) Sink (dangerous op) Sanitizer Transform Unsanitized Sanitized
Attack Surface
4 unprotected

miniOrange OTP Login, Verification and SMS Notifications Attack Surface

Entry Points37
Unprotected4

AJAX Handlers 37

authwp_ajax_mo_osp_check_spamaddons\otpspampreventer\handler\class-mootpspamajax.php:53
noprivwp_ajax_mo_osp_check_spamaddons\otpspampreventer\handler\class-mootpspamajax.php:54
authwp_ajax_mo_osp_log_attemptaddons\otpspampreventer\handler\class-mootpspamajax.php:56
noprivwp_ajax_mo_osp_log_attemptaddons\otpspampreventer\handler\class-mootpspamajax.php:57
authwp_ajax_mo_osp_save_settingsaddons\otpspampreventer\handler\class-mootpspamajax.php:59
authwp_ajax_mo_osp_check_puzzleaddons\otpspampreventer\handler\class-mootpspamajax.php:61
noprivwp_ajax_mo_osp_check_puzzleaddons\otpspampreventer\handler\class-mootpspamajax.php:62
authwp_ajax_mo_osp_generate_puzzleaddons\otpspampreventer\handler\class-mootpspamajax.php:63
noprivwp_ajax_mo_osp_generate_puzzleaddons\otpspampreventer\handler\class-mootpspamajax.php:64
authwp_ajax_mo_osp_verify_puzzleaddons\otpspampreventer\handler\class-mootpspamajax.php:65
noprivwp_ajax_mo_osp_verify_puzzleaddons\otpspampreventer\handler\class-mootpspamajax.php:66
authwp_ajax_mo_osp_check_timer_statusaddons\otpspampreventer\handler\class-mootpspamajax.php:68
noprivwp_ajax_mo_osp_check_timer_statusaddons\otpspampreventer\handler\class-mootpspamajax.php:69
authwp_ajax_mo_osp_check_puzzle_requirementaddons\otpspampreventer\handler\class-mootpspamajax.php:71
noprivwp_ajax_mo_osp_check_puzzle_requirementaddons\otpspampreventer\handler\class-mootpspamajax.php:72
authwp_ajax_mo_osp_check_blockedaddons\otpspampreventer\handler\class-mootpspamajax.php:74
noprivwp_ajax_mo_osp_check_blockedaddons\otpspampreventer\handler\class-mootpspamajax.php:75
authwp_ajax_mo_osp_unblock_useraddons\otpspampreventer\handler\class-mootpspamajax.php:77
noprivwp_ajax_mo_osp_unblock_useraddons\otpspampreventer\handler\class-mootpspamajax.php:78
authwp_ajax_mo_dismiss_noticehandler\class-moactionhandlerhandler.php:50
authwp_ajax_mo_dismiss_sms_noticehandler\class-moactionhandlerhandler.php:51
authwp_ajax_mo_modal_actionhandler\class-moactionhandlerhandler.php:52
authwp_ajax_mo_selected_country_modal_dismisshandler\class-moactionhandlerhandler.php:53
authwp_ajax_mo_transaction_logs_modal_dismisshandler\class-moactionhandlerhandler.php:54
authwp_ajax_miniorange_get_message_valuehandler\class-moactionhandlerhandler.php:55
authwp_ajax_momrp_single_send_otphandler\forms\class-memberpresssinglecheckoutform.php:74
noprivwp_ajax_momrp_single_send_otphandler\forms\class-memberpresssinglecheckoutform.php:75
authwp_ajax_mo-admin-checkhandler\forms\class-wploginform.php:209
noprivwp_ajax_mo-admin-checkhandler\forms\class-wploginform.php:210
authwp_ajax_wa_miniorange_get_test_responsehelper\class-miniorangegateway.php:70
authwp_ajax_miniorange_get_test_responsehelper\class-miniorangegateway.php:71
authwp_ajax_mo_generate_reporthelper\class-moreporting.php:41
noprivwp_ajax_mo_generate_reporthelper\class-moreporting.php:42
authwp_ajax_mo_toggle_reporthelper\class-moreporting.php:43
noprivwp_ajax_mo_toggle_reporthelper\class-moreporting.php:44
authwp_ajax_wa_miniorange_check_pricinghelper\class-transactioncost.php:1490
authwp_ajax_miniorange_check_sms_pricinghelper\class-transactioncost.php:1491
WordPress Hooks 153
actionmo_otp_verification_delete_addon_optionsaddons\countrycode\class-selectedcountrycode.php:41
actionadmin_enqueue_scriptsaddons\countrycode\handler\class-selectedcountrycode.php:80
actionadmin_initaddons\countrycode\handler\class-selectedcountrycode.php:81
filterselected_countriesaddons\countrycode\handler\class-selectedcountrycode.php:82
filtermo_blocked_phonesaddons\countrycode\handler\class-selectedcountrycode.php:83
actionwp_enqueue_scriptsaddons\otpspampreventer\handler\class-mootpspamintegration.php:61
actionadmin_enqueue_scriptsaddons\otpspampreventer\handler\class-mootpspamintegration.php:63
actionwp_footeraddons\otpspampreventer\handler\class-mootpspamintegration.php:65
filtermo_osp_get_cooldown_timeaddons\otpspampreventer\handler\class-mootpspamintegration.php:72
actionmo_osp_mosp_check_spam_before_otp_sendaddons\otpspampreventer\handler\class-mootpspamintegration.php:74
actionmo_generate_or_resend_otpaddons\otpspampreventer\handler\class-mootpspamintegration.php:76
actionmo_include_jsaddons\otpspampreventer\handler\class-mootpspamintegration.php:78
actionadmin_enqueue_scriptsaddons\otpspampreventer\handler\class-mootpspampreventeraddonhandler.php:38
actionadmin_initaddons\otpspampreventer\handler\class-mootpspampreventeraddonhandler.php:46
actionmo_osp_cleanup_expiredaddons\otpspampreventer\handler\class-mootpspamstorage.php:49
actionmo_otp_verification_add_on_controlleraddons\otpspampreventer\osp_autoload.php:35
actionplugins_loadedclass-moinit.php:74
actionadmin_menuclass-moinit.php:75
actionadmin_enqueue_scriptsclass-moinit.php:76
actionadmin_enqueue_scriptsclass-moinit.php:77
actionwp_enqueue_scriptsclass-moinit.php:78
actionlogin_enqueue_scriptsclass-moinit.php:79
actionmo_registration_show_messageclass-moinit.php:80
actionhourly_syncclass-moinit.php:81
actionadmin_footerclass-moinit.php:82
filterwp_mail_from_nameclass-moinit.php:83
filterplugin_row_metaclass-moinit.php:84
actionwp_enqueue_scriptsclass-moinit.php:85
actioninithandler\class-formactionhandler.php:41
actionmo_validate_otphandler\class-formactionhandler.php:42
actionmo_generate_otphandler\class-formactionhandler.php:43
filtermo_filter_phone_before_api_callhandler\class-formactionhandler.php:44
actionadmin_inithandler\class-moactionhandlerhandler.php:43
actionadmin_inithandler\class-moactionhandlerhandler.php:44
actionadmin_inithandler\class-moactionhandlerhandler.php:45
filterdashboard_glance_itemshandler\class-moactionhandlerhandler.php:46
actionadmin_post_miniorange_get_form_detailshandler\class-moactionhandlerhandler.php:47
actionadmin_post_miniorange_get_gateway_confighandler\class-moactionhandlerhandler.php:48
actionadmin_noticeshandler\class-moactionhandlerhandler.php:49
actionadmin_inithandler\class-moregistrationhandler.php:41
filterbp_registration_needs_activationhandler\forms\class-buddypressregistrationform.php:69
filterbp_core_signup_send_activation_keyhandler\forms\class-buddypressregistrationform.php:70
filterbp_signup_usermetahandler\forms\class-buddypressregistrationform.php:71
actionbp_signup_validatehandler\forms\class-buddypressregistrationform.php:72
actionbp_core_signup_userhandler\forms\class-buddypressregistrationform.php:75
filterwpcf7_validate_text*handler\forms\class-contactform7.php:72
filterwpcf7_validate_email*handler\forms\class-contactform7.php:73
filterwpcf7_validate_emailhandler\forms\class-contactform7.php:74
filterwpcf7_validate_tel*handler\forms\class-contactform7.php:75
actionwpcf7_before_send_mailhandler\forms\class-contactform7.php:76
actionwp_enqueue_scriptshandler\forms\class-contactform7.php:78
filtereverest_forms_process_initial_errorshandler\forms\class-everestcontactform.php:74
filtereverest_forms_process_after_filterhandler\forms\class-everestcontactform.php:75
actionwp_enqueue_scriptshandler\forms\class-everestcontactform.php:79
actionfluentform_before_insert_submissionhandler\forms\class-fluentform.php:70
actionwp_enqueue_scriptshandler\forms\class-fluentform.php:71
filterfrm_validate_field_entryhandler\forms\class-formidableform.php:79
actionwp_enqueue_scriptshandler\forms\class-formidableform.php:82
actionwp_enqueue_scriptshandler\forms\class-forminatorform.php:79
filterforminator_custom_form_submit_errorshandler\forms\class-forminatorform.php:82
filterforminator_form_ajax_submit_responsehandler\forms\class-forminatorform.php:83
actionwp_enqueue_scriptshandler\forms\class-gravityform.php:79
filtergform_field_validationhandler\forms\class-gravityform.php:80
actiongform_pre_submissionhandler\forms\class-gravityform.php:81
filtermepr-validate-signuphandler\forms\class-memberpressregistrationform.php:71
actionwp_enqueue_scriptshandler\forms\class-memberpressregistrationform.php:74
filtermepr-validate-signuphandler\forms\class-memberpresssinglecheckoutform.php:77
actionwp_enqueue_scriptshandler\forms\class-memberpresssinglecheckoutform.php:78
actionmepr-checkout-before-submithandler\forms\class-memberpresssinglecheckoutform.php:79
actionuser_registerhandler\forms\class-memberpresssinglecheckoutform.php:81
actionwp_enqueue_scriptshandler\forms\class-moumpasswordreset.php:95
actionum_reset_password_errors_hookhandler\forms\class-moumpasswordreset.php:97
actionum_reset_password_process_hookhandler\forms\class-moumpasswordreset.php:98
actionwp_enqueue_scriptshandler\forms\class-mowccheckoutnew.php:150
actionwoocommerce_store_api_checkout_order_processedhandler\forms\class-mowccheckoutnew.php:151
actionninja_forms_after_form_displayhandler\forms\class-ninjaformajaxform.php:72
filterninja_forms_submit_datahandler\forms\class-ninjaformajaxform.php:73
actionwp_enqueue_scriptshandler\forms\class-ultimatememberprofileform.php:87
actionum_submit_account_errors_hookhandler\forms\class-ultimatememberprofileform.php:88
actionum_add_error_on_form_submit_validationhandler\forms\class-ultimatememberprofileform.php:89
actionum_submit_form_errors_hook__registrationhandler\forms\class-ultimatememberregistrationform.php:77
filterum_registration_user_rolehandler\forms\class-ultimatememberregistrationform.php:78
actionum_submit_form_errors_hook_handler\forms\class-ultimatememberregistrationform.php:80
actionum_before_new_user_registerhandler\forms\class-ultimatememberregistrationform.php:81
actionwp_enqueue_scriptshandler\forms\class-ultimatememberregistrationform.php:84
actionwoocommerce_edit_account_formhandler\forms\class-wcprofileform.php:77
actionwoocommerce_save_account_details_errorshandler\forms\class-wcprofileform.php:79
actionwp_enqueue_scriptshandler\forms\class-wcprofileform.php:80
filterwoocommerce_process_myaccount_field_billing_emailhandler\forms\class-woocommercebilling.php:67
filterwoocommerce_process_myaccount_field_billing_phonehandler\forms\class-woocommercebilling.php:69
actionwoocommerce_checkout_before_customer_detailshandler\forms\class-woocommercecheckoutform.php:141
actionwoocommerce_review_order_after_submithandler\forms\class-woocommercecheckoutform.php:166
actionwoocommerce_after_checkout_validationhandler\forms\class-woocommercecheckoutform.php:167
actionwoocommerce_after_checkout_billing_formhandler\forms\class-woocommercecheckoutform.php:169
actionwoocommerce_after_checkout_validationhandler\forms\class-woocommercecheckoutform.php:170
actionwoocommerce_thankyouhandler\forms\class-woocommercecheckoutform.php:174
filterwoocommerce_checkout_posted_datahandler\forms\class-woocommercecheckoutform.php:177
actionwp_enqueue_scriptshandler\forms\class-woocommercecheckoutform.php:178
filterwoocommerce_process_registration_errorshandler\forms\class-woocommerceregistrationform.php:92
actionwoocommerce_created_customerhandler\forms\class-woocommerceregistrationform.php:93
filterwoocommerce_registration_redirecthandler\forms\class-woocommerceregistrationform.php:94
actionwoocommerce_register_formhandler\forms\class-woocommerceregistrationform.php:97
actionwcmp_vendor_register_formhandler\forms\class-woocommerceregistrationform.php:98
actionwoocommerce_register_formhandler\forms\class-woocommerceregistrationform.php:101
actionwcmp_vendor_register_formhandler\forms\class-woocommerceregistrationform.php:102
actionwp_enqueue_scriptshandler\forms\class-woocommerceregistrationform.php:103
filterwpforms_process_initial_errorshandler\forms\class-wpformsplugin.php:80
actionwp_enqueue_scriptshandler\forms\class-wpformsplugin.php:81
actionlogin_enqueue_scriptshandler\forms\class-wploginform.php:178
actionwp_enqueue_scriptshandler\forms\class-wploginform.php:179
filterauthenticatehandler\forms\class-wploginform.php:207
filterwp_authenticate_userhandler\forms\class-wploginform.php:213
filterum_custom_authenticate_error_codeshandler\forms\class-wploginform.php:214
actionadmin_noticeshelper\class-modisplaymessages.php:48
filtermo_start_reportinghelper\class-moreporting.php:38
filtermo_update_reportinghelper\class-moreporting.php:39
actionadmin_inithelper\class-moreporting.php:40
actionadmin_enqueue_scriptshelper\class-movisualtour.php:51
actionbefore_woocommerce_initminiorange_validation_settings.php:31
actionmo_otp_verification_delete_addon_optionsnotifications\umsmsnotification\class-ultimatemembersmsnotification.php:55
actioninitnotifications\umsmsnotification\handler\class-ultimatemembersmsnotificationshandler.php:53
actionum_registration_completenotifications\umsmsnotification\handler\class-ultimatemembersmsnotificationshandler.php:54
actionadmin_initnotifications\umsmsnotification\handler\class-ultimatemembersmsnotificationshandler.php:55
actionadmin_enqueue_scriptsnotifications\wcsmsnotification\class-woocommercesmsnotification.php:54
actionmo_otp_verification_delete_addon_optionsnotifications\wcsmsnotification\class-woocommercesmsnotification.php:55
actioninitnotifications\wcsmsnotification\handler\class-woocommercenotifications.php:65
actionwoocommerce_created_customer_notificationnotifications\wcsmsnotification\handler\class-woocommercenotifications.php:66
actionwoocommerce_new_customer_note_notificationnotifications\wcsmsnotification\handler\class-woocommercenotifications.php:67
actionwoocommerce_order_status_changednotifications\wcsmsnotification\handler\class-woocommercenotifications.php:68
actionwoocommerce_order_status_changednotifications\wcsmsnotification\handler\class-woocommercenotifications.php:69
actionwoocommerce_low_stocknotifications\wcsmsnotification\handler\class-woocommercenotifications.php:74
actionwoocommerce_no_stocknotifications\wcsmsnotification\handler\class-woocommercenotifications.php:77
actionadmin_initnotifications\wcsmsnotification\handler\class-woocommercenotifications.php:81
actionadmin_initnotifications\wcsmsnotification\handler\class-woocommercenotifications.php:82
actionadd_meta_boxesnotifications\wcsmsnotification\handler\class-woocommercenotifications.php:83
actionmo_otp_verification_add_on_controllerobjects\class-baseaddon.php:31
actionadmin_initobjects\class-formhandler.php:262
actioninitobjects\class-formhandler.php:268
filtermo_phone_dropdown_selectorobjects\class-formhandler.php:270
filteris_ajax_formobjects\class-formhandler.php:273
actionotp_verification_successfulobjects\class-formhandler.php:283
actionotp_verification_failedobjects\class-formhandler.php:285
filtermo_otp_verification_mismatch_for_popup_formsobjects\class-formhandler.php:287
actionunset_session_variableobjects\class-formhandler.php:290
filteris_login_or_social_formobjects\class-formhandler.php:293
actionwp_enqueue_scriptsobjects\class-formhandler.php:295
actionwp_enqueue_scriptsobjects\class-formhandler.php:297
filtermo_template_defaultsobjects\class-template.php:162
filtermo_template_buildobjects\class-template.php:163
actionadmin_post_mo_preview_popupobjects\class-template.php:164
actionadmin_post_mo_popup_saveobjects\class-template.php:165
actionadmin_post_mo_popup_resetobjects\class-template.php:166
actionadmin_footerviews\common-elements.php:949

Scheduled Events 2

mo_osp_cleanup_expired
hourly_sync
Maintenance & Trust

miniOrange OTP Login, Verification and SMS Notifications Maintenance & Trust

Maintenance Signals

WordPress version tested6.9.4
Last updatedMar 27, 2026
PHP min version5.3.0
Downloads450K

Community Trust

Rating94/100
Number of ratings433
Active installs6K
Developer Profile

miniOrange OTP Login, Verification and SMS Notifications Developer Profile

miniOrange

40 plugins · 83K total installs

76
trust score
Avg Security Score
96/100
Avg Patch Time
324 days
View full developer profile
Detection Fingerprints

How We Detect miniOrange OTP Login, Verification and SMS Notifications

Patterns used to identify this plugin on WordPress sites during automated security audits and web crawling.

Asset Fingerprints

Asset Paths
/wp-content/plugins/miniorange-otp-verification/js/src/admin/bootstrap.min.js/wp-content/plugins/miniorange-otp-verification/js/src/admin/otp-admin-login.js/wp-content/plugins/miniorange-otp-verification/js/src/admin/otp-admin-settings.js/wp-content/plugins/miniorange-otp-verification/js/src/admin/otp-admin-utility.js/wp-content/plugins/miniorange-otp-verification/js/src/frontend/otp-frontend-utility.js/wp-content/plugins/miniorange-otp-verification/js/src/frontend/otp-frontend-validation.js/wp-content/plugins/miniorange-otp-verification/css/otp-admin-css.css/wp-content/plugins/miniorange-otp-verification/css/otp-frontend.css
Script Paths
/wp-content/plugins/miniorange-otp-verification/js/src/admin/bootstrap.min.js/wp-content/plugins/miniorange-otp-verification/js/src/admin/otp-admin-login.js/wp-content/plugins/miniorange-otp-verification/js/src/admin/otp-admin-settings.js/wp-content/plugins/miniorange-otp-verification/js/src/admin/otp-admin-utility.js/wp-content/plugins/miniorange-otp-verification/js/src/frontend/otp-frontend-utility.js/wp-content/plugins/miniorange-otp-verification/js/src/frontend/otp-frontend-validation.js
Version Parameters
miniorange-otp-verification/js/src/admin/bootstrap.min.js?ver=miniorange-otp-verification/js/src/admin/otp-admin-login.js?ver=miniorange-otp-verification/js/src/admin/otp-admin-settings.js?ver=miniorange-otp-verification/js/src/admin/otp-admin-utility.js?ver=miniorange-otp-verification/js/src/frontend/otp-frontend-utility.js?ver=miniorange-otp-verification/js/src/frontend/otp-frontend-validation.js?ver=miniorange-otp-verification/css/otp-admin-css.css?ver=miniorange-otp-verification/css/otp-frontend.css?ver=

HTML / DOM Fingerprints

CSS Classes
mo-otp-update-messagemo_otp_validation_container
HTML Comments
<!-- The following comment is added to make sure that OTP plugin should be loaded on the pages --><!-- begin:OTP Plugin Comment -->
Data Attributes
data-plugin-dirdata-plugin-name
JS Globals
mo_otp_validation_paramsmo_otp_script_paramsmo_otp_admin_params
Shortcode Output
[mo_otp_login]
FAQ

Frequently Asked Questions about miniOrange OTP Login, Verification and SMS Notifications