Skip to content

Commit 1f84e52

Browse files
authored
Merge pull request #8 from talsec/docs
docs: Add minimal RN version requirement
2 parents 4a0ec40 + 4de1c85 commit 1f84e52

File tree

1 file changed

+86
-68
lines changed

1 file changed

+86
-68
lines changed

README.md

Lines changed: 86 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,76 @@
1-
2-
31
![FreeRasp](https://raw.githubusercontent.com/talsec/Free-RASP-Community/master/visuals/freeRASPforRN.png)
42

53
![GitHub Repo stars](https://img.shields.io/github/stars/talsec/Free-RASP-Community?color=green) ![GitHub](https://img.shields.io/github/license/talsec/Free-RASP-Community) ![GitHub](https://img.shields.io/github/last-commit/talsec/Free-RASP-Community) ![Publisher](https://img.shields.io/pub/publisher/freerasp)
4+
65
# freeRASP for React Native
76

87
freeRASP for React Native is a mobile in-app protection and security monitoring plugin. It aims to cover the main aspects of RASP (Runtime App Self Protection) and application shielding.
98

109
# :notebook_with_decorative_cover: Table of contents
1110

1211
- [Overview](#overview)
12+
- [Requirements](#requirements)
1313
- [Usage](#usage)
14-
* [(Optional) Create a new React Native demo application](#optional-create-a-new-react-native-demo-application)
15-
* [Step 1: Install the plugin](#step-1-install-the-plugin)
16-
* [Step 2: Set up the dependencies](#step-2-set-up-the-dependencies)
17-
* [Step 3: Dev vs Release version](#step-3-dev-vs-release-version)
18-
* [Step 4: Import freeRASP into the app](#step-4-import-freerasp-into-the-app)
19-
* [Step 5: Setup the configuration, callbacks and initialize freeRASP](#step-5-setup-the-configuration-callbacks-and-initialize-freerasp)
20-
* [Step 6: User Data Policies](#step-6-user-data-policies)
14+
- [(Optional) Create a new React Native demo application](#optional-create-a-new-react-native-demo-application)
15+
- [Step 1: Install the plugin](#step-1-install-the-plugin)
16+
- [Step 2: Set up the dependencies](#step-2-set-up-the-dependencies)
17+
- [Step 3: Dev vs Release version](#step-3-dev-vs-release-version)
18+
- [Step 4: Import freeRASP into the app](#step-4-import-freerasp-into-the-app)
19+
- [Step 5: Setup the configuration, callbacks and initialize freeRASP](#step-5-setup-the-configuration-callbacks-and-initialize-freerasp)
20+
- [Step 6: User Data Policies](#step-6-user-data-policies)
2121
- [Security Report](#security-report)
2222
- [Enterprise Services](#bar_chart-enterprise-services)
23-
* [Commercial version](#commercial-version)
24-
* [Plans Comparison](#plans-comparison)
23+
- [Commercial version](#commercial-version)
24+
- [Plans Comparison](#plans-comparison)
2525

2626
# Overview
2727

2828
The freeRASP is available for Flutter, Cordova, React Native, Android, and iOS developers. We encourage community contributions, investigations of attack cases, joint data research, and other activities aiming to make better app security and app safety for end-users.
2929

3030
freeRASP plugin is designed to combat
3131

32-
* Reverse engineering attempts
33-
* Re-publishing or tampering with the apps
34-
* Running application in a compromised OS environment
35-
* Malware, fraudsters, and cybercriminal activities
32+
- Reverse engineering attempts
33+
- Re-publishing or tampering with the apps
34+
- Running application in a compromised OS environment
35+
- Malware, fraudsters, and cybercriminal activities
3636

3737
Key features are the detection and prevention of
3838

39-
* Root/Jailbreak (e.g., unc0ver, check1rain)
40-
* Hooking framework (e.g., Frida, Shadow)
41-
* Untrusted installation method
42-
* App/Device (un)binding
39+
- Root/Jailbreak (e.g., unc0ver, check1rain)
40+
- Hooking framework (e.g., Frida, Shadow)
41+
- Untrusted installation method
42+
- App/Device (un)binding
4343

4444
Additional freeRASP features include low latency, easy integration and a weekly [Security Report](#security-report) containing detailed information about detected incidents and potential threats, summarizing the state of your app security.
4545

4646
The commercial version provides a top-notch protection level, extra features, support and maintenance. One of the most valued commercial features is AppiCrypt® - App Integrity Cryptogram.
4747

4848
It allows easy to implement API protection and App Integrity verification on the backend to prevent API abuse:
4949

50-
* Bruteforce attacks
51-
* Botnets
52-
* Session-hijacking
53-
* DDoS
50+
- Bruteforce attacks
51+
- Botnets
52+
- Session-hijacking
53+
- DDoS
5454

5555
It is a unified solution that works across all mobile platforms without dependency on external web services (i.e., without extra latency, an additional point of failure, and maintenance costs).
5656

5757
Learn more about commercial features at [https://talsec.app](https://talsec.app).
5858

5959
Learn more about freemium freeRASP features at [GitHub main repository](https://github.com/talsec/Free-RASP-Community).
6060

61+
# Requirements
62+
63+
Following minimal version requirements has to be met
64+
in order to run freeRASP in your app:
65+
66+
- `react-native` >= `0.65.3`
67+
6168
# Usage
6269

6370
We will guide you step-by-step, but you can always check the expected result in the example.
6471

65-
6672
## (Optional) Create a new React Native demo application
73+
6774
Create a new React Native project:
6875

6976
$ npx react-native init AwesomeProject
@@ -77,8 +84,11 @@ or
7784
$ yarn add https://github.com/talsec/Free-RASP-ReactNative.git
7885

7986
## Step 2: Set up the dependencies
87+
8088
### Android
89+
8190
freeRASP needs to have access to the maven repository containing freeRASP. Add following lines into the `android/build.gradle` file, in the `allprojects.repositories` section:
91+
8292
```gradle
8393
allprojects {
8494
repositories {
@@ -93,58 +103,61 @@ allprojects {
93103
```
94104

95105
### iOS
106+
96107
freeRASP React Native plugin uses Pods. Navigate to the `ios` folder and run:
97108

98109
$ pod install
99110

100-
101111
## Step 3: Dev vs Release version
112+
102113
The Dev version is used to not complicate the development process of the application, e.g. if you would implement killing of the application on the debugger callback. It disables some checks which won't be triggered during the development process:
103114

104-
* Emulator-usage (simulator)
105-
* Debugging (debug)
106-
* Signing (appIntegrity)
107-
* Unofficial store (unofficialStore)
115+
- Emulator-usage (simulator)
116+
- Debugging (debug)
117+
- Signing (appIntegrity)
118+
- Unofficial store (unofficialStore)
108119

109120
Which version of freeRASP is used is tied to the application's development stage - more precisely, how the application is compiled.
110121

111122
### Android
123+
112124
Android implementation of the React Native plugin detects selected development stage and automatically applies the suitable version of the library.
113125

114-
* `npx react-native run-android` (debug) -> uses dev version of freeRASP
115-
* `npx react-native run-android --variant release` (release) -> uses release version of freeRASP
126+
- `npx react-native run-android` (debug) -> uses dev version of freeRASP
127+
- `npx react-native run-android --variant release` (release) -> uses release version of freeRASP
116128

117129
### iOS
118-
For the iOS implemtation, it's neccesary to add script into the Xcode environment, that automatically switches between the library dev/release versions according to selected development stage. Then, it is necessary to embedd a symlink to correct TalsecRuntime.xcframework.
119130

120-
1. Add pre-built script for changing the Debug and Release versions of the framework:
121-
* Open up the **.xcworkspace** file
122-
* Go to **Product** -> **Scheme** -> **Edit Scheme...** -> **Build (dropdown arrow)** -> **Pre-actions**
123-
* Hit **+** and then **New Run Script Action**
124-
* Set **Provide build setting from** to your application
125-
* Copy-paste following script:
126-
```shell
127-
cd "${SRCROOT}/../node_modules/freerasp-react-native/ios"
128-
if [ "${CONFIGURATION}" = "Release" ]; then
129-
rm -rf ./TalsecRuntime.xcframework
130-
ln -s ./Release/TalsecRuntime.xcframework/ TalsecRuntime.xcframework
131-
else
132-
rm -rf ./TalsecRuntime.xcframework
133-
ln -s ./Debug/TalsecRuntime.xcframework/ TalsecRuntime.xcframework
134-
fi
135-
```
136-
* **Close**
137-
3. Add dependency on the symlink
138-
* Go to your **Target** -> **Build Phases** -> **Link Binary With Libraries**
139-
* Add dependency (drag & drop right after **libPods**) on the symlink on the following location:
140-
*AwesomeProject/node_modules/freerasp-react-native/ios/TalsecRuntime.xcframework*
141-
* If there is no symlink, try to create it manually in that folder by the following command:
142-
* $ ln -s ./Debug/TalsecRuntime.xcframework/ TalsecRuntime.xcframework
131+
For the iOS implemtation, it's neccesary to add script into the Xcode environment, that automatically switches between the library dev/release versions according to selected development stage. Then, it is necessary to embedd a symlink to correct TalsecRuntime.xcframework.
143132

133+
1. Add pre-built script for changing the Debug and Release versions of the framework:
134+
- Open up the **.xcworkspace** file
135+
- Go to **Product** -> **Scheme** -> **Edit Scheme...** -> **Build (dropdown arrow)** -> **Pre-actions**
136+
- Hit **+** and then **New Run Script Action**
137+
- Set **Provide build setting from** to your application
138+
- Copy-paste following script:
139+
```shell
140+
cd "${SRCROOT}/../node_modules/freerasp-react-native/ios"
141+
if [ "${CONFIGURATION}" = "Release" ]; then
142+
rm -rf ./TalsecRuntime.xcframework
143+
ln -s ./Release/TalsecRuntime.xcframework/ TalsecRuntime.xcframework
144+
else
145+
rm -rf ./TalsecRuntime.xcframework
146+
ln -s ./Debug/TalsecRuntime.xcframework/ TalsecRuntime.xcframework
147+
fi
148+
```
149+
- **Close**
150+
2. Add dependency on the symlink
151+
- Go to your **Target** -> **Build Phases** -> **Link Binary With Libraries**
152+
- Add dependency (drag & drop right after **libPods**) on the symlink on the following location:
153+
_AwesomeProject/node_modules/freerasp-react-native/ios/TalsecRuntime.xcframework_
154+
- If there is no symlink, try to create it manually in that folder by the following command:
155+
- $ ln -s ./Debug/TalsecRuntime.xcframework/ TalsecRuntime.xcframework
144156

145157
Followingly:
146-
* `npx react-native run-ios` (debug) -> uses dev version of freeRASP
147-
* `npx react-native run-ios --configuration Release` (release) -> uses release version of freeRASP
158+
159+
- `npx react-native run-ios` (debug) -> uses dev version of freeRASP
160+
- `npx react-native run-ios --configuration Release` (release) -> uses release version of freeRASP
148161

149162
## Step 4: Import freeRASP into the app
150163

@@ -155,14 +168,18 @@ import { useFreeRasp } from 'freerasp-react-native';
155168
```
156169
157170
## Step 5: Setup the configuration, callbacks and initialize freeRASP
171+
158172
First, the configuration and callbacks will be explained. Then the **Initialization** chapter shows the implementation.
173+
159174
### Configuration
175+
160176
You need to provide configuration for freeRASP to work properly and initialize it. The freeRASP configuration contains configs for both Android and iOS. You must fill all the required values for the plugin to work.
161177
162178
For Android:
163-
- `packageName` - package name of your app you chose when you created it
164-
- `certificateHashes` - hash of the certificate of the key which was used to sign the application. **Hash which is passed here must be encoded in Base64 form.** If you are not sure how to get your certificate hash, you can check out the guide on our [Github wiki](https://github.com/talsec/Free-RASP-Community/wiki/Getting-your-signing-certificate-hash-of-app). Multiple hashes are supported, e.g. if you are using a different one for the Huawei App Gallery.
165-
- `supportedAlternativeStores` _(optional)_ - If you publish on the Google Play Store and/or Huawei AppGallery, you **don't have to assign anything** there as those are supported out of the box.
179+
180+
- `packageName` - package name of your app you chose when you created it
181+
- `certificateHashes` - hash of the certificate of the key which was used to sign the application. **Hash which is passed here must be encoded in Base64 form.** If you are not sure how to get your certificate hash, you can check out the guide on our [Github wiki](https://github.com/talsec/Free-RASP-Community/wiki/Getting-your-signing-certificate-hash-of-app). Multiple hashes are supported, e.g. if you are using a different one for the Huawei App Gallery.
182+
- `supportedAlternativeStores` _(optional)_ - If you publish on the Google Play Store and/or Huawei AppGallery, you **don't have to assign anything** there as those are supported out of the box.
166183
167184
For iOS similarly to Android, `appBundleId` and `appTeamId` are required.
168185
@@ -264,8 +281,8 @@ If you encounter any other issues, you can see the list of solved issues [here](
264281
265282
**Solution:**
266283
267-
* In `package.json`, update `react-native` to a higher patch version and run `npm install` (or `yarn install`).
268-
* [See this issue to find out which patch version is relevant for you.](https://github.com/facebook/react-native/issues/35210)
284+
- In `package.json`, update `react-native` to a higher patch version and run `npm install` (or `yarn install`).
285+
- [See this issue to find out which patch version is relevant for you.](https://github.com/facebook/react-native/issues/35210)
269286
270287
# Security Report
271288
@@ -278,25 +295,26 @@ To receive Security Reports, fill out the _watcherMail_ field in [config](#step-
278295
![dashboard](https://raw.githubusercontent.com/talsec/Free-RASP-Community/master/visuals/dashboard.png)
279296
280297
# :bar_chart: Enterprise Services
298+
281299
We provide app security hardening SDK: i.e. AppiCrypt®, Customer Data Encryption (local storage), End-to-end encryption, Strings protection (e.g. API keys) and Dynamic Certificate Pinning to our commercial customers as well. To get the most advanced protection compliant with PSD2 RT and eIDAS and support from our experts, contact us at [talsec.app](https://talsec.app).
282300
283301
## Commercial version
302+
284303
The commercial version provides a top-notch protection level, extra features, support, and maintenance. One of the most valued commercial features is [AppiCrypt®](https://www.talsec.app/appicrypt) - App Integrity Cryptogram.
285304
286305
It allows easy to implement API protection and App Integrity verification on the backend to prevent API abuse:
287306
288-
- Bruteforce attacks
289-
- Botnets
290-
- Session-hijacking
291-
- DDoS
307+
- Bruteforce attacks
308+
- Botnets
309+
- Session-hijacking
310+
- DDoS
292311
293312
It is a unified solution that works across all mobile platforms without dependency on external web services (i.e., without extra latency, an additional point of failure, and maintenance costs).
294313
295-
Learn more about commercial features at [https://talsec.app](https://talsec.app/).
314+
Learn more about commercial features at [https://talsec.app](https://talsec.app/).
296315
297316
**TIP:** You can try freeRASP and then upgrade easily to an enterprise service.
298317
299-
300318
## Plans Comparison
301319
302320
<table>

0 commit comments

Comments
 (0)