Есть какой-нибудь способ проверить подпись приложения в ionic?

#javascript #typescript #ionic-framework #ionic3 #cordova-plugins

#javascript #typescript #ionic-framework #ionic3 #cordova-плагины

Вопрос:

Прошло 2 дня. Я искал какую-то подсказку о библиотеке / функции проверки сертификата приложения в ionic. Как и в Android, я нашел SignatureCheck.java введите описание ссылки здесь, так можем ли мы также реализовать что-то подобное в TypeScript для проверки сертификата приложения такой же или нет? Любое предложение было бы полезно, спасибо

Ответ №1:

Я только что задавался тем же вопросом, и после недолгих поисков я наткнулся на этот пост: https://medium.com/@atifhussain.nu21/ssl-pinning-in-ionic-cordova-based-applications-ce993adcc07

Это выглядит как очень жизнеспособное решение, использующее плагин / библиотеку cordova ‘cordova-plugin-sslcertificatechecker’.

Пример кода:

 import { Injectable, Injector } from '@angular/core';
import {
 HttpEvent,
 HttpHandler,
 HttpInterceptor,
 HttpRequest
} from '@angular/common/http';
import { Network } from '@ionic-native/network';
import { Observable } from 'rxjs/Rx';
import { CONFIG_CONSTANTS } from '../../common/constant/app-config';
import { MESSAGE_CONSTANTS } from '../../common/constant/message';
declare var window: any;
@Injectable()
export class RequestInterceptor implements HttpInterceptor {
 helperFunction: HelperFunctions;
constructor(private network: Network, private injector: Injector) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
this.helperFunction = this.injector.get(HelperFunctions);
let setHeader = {
   'ContentType': 'application/json',
   'Accept': 'application/json',
   'DEVICETYPE': 'MOBILE',
   'X-Requested-With': 'XMLHttpRequest',
   'Content-Type': 'application/json',
   'dataType': 'json'
  };
let Host = CONFIG_CONSTANTS.BASE_URL;
if (this.network.type === 'none') {
   this.helperFunction.showAlert(MESSAGE_CONSTANTS.CONNECTION_NOT_WORKING);
   return next.handle(request);
  }
return this.checkSecurity(`${Host}${request.url}`, request).flatMap((modifiedReq) => {
   let newReq = null;
   if (modifiedReq['message'] === 'CONNECTION_SECURE') {
    newReq = request.clone({
     url: `${Host}${request.url}`,
     setHeaders: setHeader
    });
   }
   return next.handle(newReq);
  });
 }
checkSecurity(URL, request) {
  return new Observable((observer) => {
   window.plugins.sslCertificateChecker.check(
    (message) => {
     return observer.next({req: request, message: message});
    },
    (message) => {
     return observer.error({req: request, message: message});
    },
    URL,
    CONFIG_CONSTANTS.FINGERPRINT);
  });
 }
}
  

Мне еще предстоит попробовать это для моего собственного проекта. Я надеюсь, что это поможет, дайте нам знать. 🙂