ಪೈಥಾನ್ ಬಳಕೆದಾರ ಇನ್ಪುಟ್ - ಬಳಕೆದಾರ ಇನ್ಪುಟ್ ಪೈಥಾನ್ - ಪೈಥಾನ್ ನಲ್ಲಿ ಬಳಕೆದಾರ ಇನ್ಪುಟ್ ಪಡೆಯುವುದು ಹೇಗೆ

ಪೈಥಾನ್‌ನಲ್ಲಿ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಪಡೆಯುವ ತಪ್ಪು ಮಾರ್ಗ (ಮತ್ತು ಸುರಕ್ಷಿತ ಪರ್ಯಾಯ)

ಪರಿವಿಡಿ

ಓದಲೇಬೇಕಾದ ಪೋಸ್ಟ್‌ಗಳು

ಇತ್ತೀಚಿನ ಆಸಕ್ತಿಯ ಪೋಸ್ಟ್‌ಗಳು

ಯಾವಾಗ ಇನ್ಪುಟ್ () ತಪ್ಪಾಗುತ್ತದೆ

ಪೈಥಾನ್ ನಿಯೋಜನಾ ಸ್ಕ್ರಿಪ್ಟ್ ಒಮ್ಮೆ ಕನ್ಸೋಲ್ ಆಜ್ಞೆಯನ್ನು ಕೇಳಿದೆ. ಒಂದು ತಪ್ಪಾಗಿ ಟೈಪ್ ಮಾಡಿದ ಇನ್‌ಪುಟ್ ತಪ್ಪಾದ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಪ್ರಚೋದಿಸಿತು ಮತ್ತು ಉತ್ಪಾದನಾ ನಿರ್ಮಾಣವನ್ನು ಮುರಿಯಿತು. ಪೈಥಾನ್ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್‌ನ ಅಪಾಯ ಅದು: ಒಂದೇ ಒಂದು ಪರಿಶೀಲಿಸದ ಸ್ಟ್ರಿಂಗ್ ಇಂಜೆಕ್ಷನ್, ಡೇಟಾ ನಷ್ಟ ಅಥವಾ ಲಾಜಿಕ್ ಬೈಪಾಸ್‌ಗೆ ಕಾರಣವಾಗಬಹುದು. ಇದು ಏಕೆ ಸಂಭವಿಸುತ್ತದೆ ಮತ್ತು ಓಪನ್ ಸೋರ್ಸ್ ಮತ್ತು ಆಂತರಿಕ ಯೋಜನೆಗಳಲ್ಲಿ ಪೈಥಾನ್‌ನಲ್ಲಿ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಹೇಗೆ ನಿರ್ವಹಿಸುವುದು ಎಂಬುದನ್ನು ವಿವರಿಸೋಣ.

ಸಮಸ್ಯೆ ಬಳಕೆದಾರ ಇನ್ಪುಟ್ () ಪೈಥಾನ್

ನಮ್ಮ ಇನ್ಪುಟ್ () ಪೈಥಾನ್‌ನಲ್ಲಿ ಕಾರ್ಯವು ಸರಳವಾಗಿದೆ: ಇದು ಕನ್ಸೋಲ್‌ನಿಂದ ಪಠ್ಯವನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಸ್ಟ್ರಿಂಗ್‌ನಂತೆ ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಯಾವುದೇ ಮೌಲ್ಯೀಕರಣವಿಲ್ಲ. ಯಾವುದೇ ಪರಿಶೀಲನೆಗಳಿಲ್ಲ. ಪ್ರತ್ಯೇಕವಾಗಿ, ಅದು ನಿರುಪದ್ರವವೆಂದು ತೋರುತ್ತದೆ. ಆದರೆ ನಿರ್ಮಾಣ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ, CI/CD ಉದ್ಯೋಗಗಳು ಮತ್ತು ಯಾಂತ್ರೀಕೃತಗೊಂಡ ಪರಿಕರಗಳನ್ನು ಬಳಸುವುದರಿಂದ, ಪೈಥಾನ್ ಕಚ್ಚಾ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಅನ್ನು ನೇರವಾಗಿ ಆಜ್ಞೆಗಳು ಅಥವಾ ಕಾರ್ಯಗಳಿಗೆ ರವಾನಿಸುವುದರಿಂದ ದುರ್ಬಲತೆಗಳಿಗೆ ಬಾಗಿಲು ತೆರೆಯುತ್ತದೆ.

⚠️ ಶೈಕ್ಷಣಿಕ ಉದಾಹರಣೆ ಮಾತ್ರ, ಕ್ರಿಯಾತ್ಮಕ ಅಥವಾ ಶೋಷಣೆಗೆ ಯೋಗ್ಯವಲ್ಲ

ಪೈಥಾನ್‌ನಲ್ಲಿ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಹೇಗೆ ಪಡೆಯುವುದು ಎಂದು ನೀವು ಆಶ್ಚರ್ಯ ಪಡುತ್ತಿದ್ದರೆ, ಉತ್ತರ ಸರಳವಾಗಿದೆ: ಅದನ್ನು ಎಂದಿಗೂ ಕುರುಡಾಗಿ ನಂಬಬೇಡಿ.

DevSecOps ನಲ್ಲಿ ಅಪಾಯಗಳು ಮತ್ತು ಸುರಕ್ಷಿತ ನಿರ್ವಹಣೆ Pipelines

ಅಸುರಕ್ಷಿತ ಪೈಥಾನ್ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ವಿಭಿನ್ನವಾಗಿ ತೆವಳಬಹುದು ಸಾಫ್ಟ್‌ವೇರ್ ಜೀವನಚಕ್ರದ ಹಂತಗಳು:

  • CI/CD ಲಿಪಿಗಳು ಕಲಾಕೃತಿಗಳನ್ನು ನಿಯೋಜಿಸುವುದು ಅಥವಾ ನಿರ್ಮಿಸುವುದು
  • ಆಂತರಿಕ ಡೆವಲಪರ್ ಪರಿಕರಗಳು ನಿಯಂತ್ರಣ ಪರಿಸರಗಳು
  • ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಏಕೀಕರಣಗಳು ಅದು ಇನ್‌ಪುಟ್ ಸುರಕ್ಷಿತವಾಗಿದೆ ಎಂದು ಊಹಿಸುತ್ತದೆ.

ಒಂದು ವೇಳೆ ಅವಲಂಬನೆಯು ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಪೈಥಾನ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಣವಿಲ್ಲದೆ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿದರೆ, ನಿಮ್ಮ ಕೋಡ್ ಸುರಕ್ಷಿತವಾಗಿದ್ದರೂ ಸಹ, ನೀವು ಆ ಅಪಾಯವನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುತ್ತೀರಿ. ಅದಕ್ಕಾಗಿಯೇ ಮೌಲ್ಯೀಕರಣವನ್ನು ಉದ್ದಕ್ಕೂ ಸ್ಥಿರವಾಗಿ ಜಾರಿಗೊಳಿಸಬೇಕು pipeline.

ಉದಾಹರಣೆ pipeline ಅಪಾಯ:

ತಡೆಗಟ್ಟುವಿಕೆ CI/CD ಜಾರಿ:

ಕೀ ಟೇಕ್ಅವೇ: ಪೈಥಾನ್‌ನಲ್ಲಿ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಹೇಗೆ ಪಡೆಯುವುದು ಎಂದು ತಿಳಿದುಕೊಳ್ಳುವುದು ಕೇವಲ ಅರ್ಧದಷ್ಟು ಕೆಲಸ; ಸ್ವಯಂಚಾಲಿತ ಜಾರಿ ಖಚಿತಪಡಿಸುತ್ತದೆ ಅಸುರಕ್ಷಿತ ಕೋಡ್ ಎಂದಿಗೂ ಉತ್ಪಾದನೆಯನ್ನು ತಲುಪುವುದಿಲ್ಲ.

ಸಾಮಾನ್ಯ ದಾಳಿ ವಾಹಕಗಳು

ಅಸುರಕ್ಷಿತ ಪೈಥಾನ್ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ "ಕೆಟ್ಟ ಡೇಟಾ" ಗಿಂತ ಹೆಚ್ಚಿನದನ್ನು ಉಂಟುಮಾಡಬಹುದು. ಸಾಮಾನ್ಯ ಅಪಾಯಗಳು ಸೇರಿವೆ:

  • ಕಮಾಂಡ್ ಇಂಜೆಕ್ಷನ್, ಬಳಕೆದಾರ-ನಿಯಂತ್ರಿತ ಡೇಟಾವನ್ನು ಸಿಸ್ಟಮ್ ಆಜ್ಞೆಗಳಿಗೆ ರವಾನಿಸುವುದು
  • ಕೋಡ್ ಇಂಜೆಕ್ಷನ್: ಇನ್‌ಪುಟ್‌ನಿಂದ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ರಚಿಸಲಾದ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದು

ತಾರ್ಕಿಕ ಬೈಪಾಸ್, ದೃಢೀಕರಣವನ್ನು ಬಿಟ್ಟುಬಿಡುವುದು ಅಥವಾ ರಚಿಸಲಾದ ಇನ್‌ಪುಟ್ ಮೂಲಕ ಹರಿವನ್ನು ಬದಲಾಯಿಸುವುದು.

ನೀವು ಕಚ್ಚಾ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಪೈಥಾನ್ ಅನ್ನು ಅವಲಂಬಿಸಿದರೆ, ನೀವು ಬಳಕೆದಾರ ಅಥವಾ ಆಕ್ರಮಣಕಾರರಿಗೆ ನಿಯಂತ್ರಣವನ್ನು ಹಸ್ತಾಂತರಿಸುತ್ತಿದ್ದೀರಿ.

ಸುರಕ್ಷಿತ ಪರ್ಯಾಯ: ಇನ್‌ಪುಟ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಿಸುವುದು ಮತ್ತು ಸ್ವಚ್ಛಗೊಳಿಸುವುದು

ಗುರಿ ತೆಗೆದುಹಾಕುವುದಲ್ಲ ಇನ್ಪುಟ್ () ಎಲ್ಲಾ ಕೋಡ್‌ಗಳಿಂದ, ನಿರ್ಣಾಯಕ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಮುಟ್ಟುವ ಮೊದಲು ಪೈಥಾನ್ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಿಸಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳುವುದು.

ಪೈಥಾನ್‌ನಲ್ಲಿ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಹೇಗೆ ಪಡೆಯುವುದು ಎಂಬುದರ ಸುರಕ್ಷಿತ ವಿಧಾನವೆಂದರೆ:

  • ಪ್ರಕಾರ ಪರಿಶೀಲನೆಗಳನ್ನು ಜಾರಿಗೊಳಿಸಿ
  • ಅನುಮತಿಸಲಾದ ಮೌಲ್ಯಗಳಿಗೆ ಶ್ವೇತಪಟ್ಟಿಗಳನ್ನು ಅನ್ವಯಿಸಿ
  • ಸುರಕ್ಷಿತ ಪಾರ್ಸಿಂಗ್ ಲೈಬ್ರರಿಗಳನ್ನು ಬಳಸಿ ನಂತಹ ಆರ್ಗ್‌ಪಾರ್ಸ್ ಮತ್ತು ದೈನ್ಯಶೀಲ.

ತ್ವರಿತ ಹೋಲಿಕೆ

ಸನ್ನಿವೇಶ ಅಸುರಕ್ಷಿತ ಉದಾಹರಣೆ ಸುರಕ್ಷಿತ ಉದಾಹರಣೆ
ನೇರ ಬಳಕೆ input()
  # ⚠️ Educational example only  user_name = input("Enter username: ")  simulate_process(user_name)          
  import argparse  parser = argparse.ArgumentParser()  parser.add_argument("--username", type=str)  args = parser.parse_args()  process(args.username)          
ರಚನಾತ್ಮಕ ಮೌಲ್ಯೀಕರಣ
  # ⚠️ Educational example only  age = input("Enter your age: ")          
  from pydantic import BaseModel, ValidationError  class UserInput(BaseModel):      age: int  try:      data = UserInput(age=int(input("Enter your age: ")))  except ValidationError as e:      print("Invalid input:", e)          

ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಪೈಥಾನ್‌ಗೆ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು:

  • ಪ್ರಕಾರಗಳನ್ನು ಪರಿವರ್ತಿಸಿ ಮತ್ತು ದೋಷಗಳನ್ನು ನಿರ್ವಹಿಸಿ (ಪ್ರಯತ್ನಿಸಿ/ಹೊರತುಪಡಿಸಿ)
  • ತಿಳಿದಿರುವ ಮೌಲ್ಯಗಳಿಗೆ ಶ್ವೇತಪಟ್ಟಿಗಳನ್ನು ಅನ್ವಯಿಸಿ
  • ಬಳಸಿ ಆರ್ಗ್‌ಪಾರ್ಸ್ CLI ಗಾಗಿ ಮತ್ತು ದೈನ್ಯಶೀಲ ರಚನಾತ್ಮಕ ಡೇಟಾಗಾಗಿ

ಅಸುರಕ್ಷಿತ ಇನ್‌ಪುಟ್ ಅನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ಮತ್ತು ಜಾರಿಗೊಳಿಸುವುದು CI/CD ಕ್ಸಿಜೆನಿ ಜೊತೆ

ಎಲ್ಲಾ ಅಸುರಕ್ಷಿತ ಪೈಥಾನ್ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಹಿಡಿಯಲು ಹಸ್ತಚಾಲಿತ ವಿಮರ್ಶೆ ಸಾಕಾಗುವುದಿಲ್ಲ; ಯಾಂತ್ರೀಕರಣವು ಮುಖ್ಯವಾಗಿದೆ. ಪರಿಕರಗಳು ಇಷ್ಟ ಕ್ಸಿಜೆನಿ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಪೈಥಾನ್ ಮಾದರಿಗಳಿಗಾಗಿ ರೆಪೊಸಿಟರಿಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಿ, ಸ್ಯಾನಿಟೈಸೇಶನ್ ಇಲ್ಲದೆ. ಸಂಯೋಜಿಸಿದಾಗ CI/CD, ಅಸುರಕ್ಷಿತ ಇನ್‌ಪುಟ್ ನಿರ್ವಹಣೆ ಕಂಡುಬಂದರೆ ಅವು ಭದ್ರತಾ ಕೆಲಸದಲ್ಲಿ ವಿಫಲವಾಗುತ್ತವೆ. ಇದು ಸಮಸ್ಯೆಯನ್ನು ಸರಿಪಡಿಸುವವರೆಗೆ ಸಂರಕ್ಷಿತ ಶಾಖೆಗಳಾಗಿ ವಿಲೀನಗೊಳ್ಳುವುದನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ.

ಸನ್ನಿವೇಶ ಅಸುರಕ್ಷಿತ ಉದಾಹರಣೆ ಸುರಕ್ಷಿತ ಉದಾಹರಣೆ
ನೇರ ಬಳಕೆ input()
  # ⚠️ Educational example only — not functional  name = input("Enter username: ")  simulate_process(name)  # Simulated for demonstration          
  import argparse  parser = argparse.ArgumentParser()  parser.add_argument("--username", type=str)  args = parser.parse_args()  process(args.username)  # Validated by argparse          
ರಚನಾತ್ಮಕ ಮೌಲ್ಯೀಕರಣ
  # ⚠️ Educational example only — not functional  age = input("Enter your age: ")          
  from pydantic import BaseModel, ValidationError    class UserInput(BaseModel):      age: int    try:      data = UserInput(age=int(input("Enter your age: ")))  except ValidationError as e:      print("Invalid input:", e)          
CI/CD ಜಾರಿಗೊಳಿಸು
  # Missing automated checks allows  # unsafe input patterns to slip in  # during reviews/merges.          
  jobs:    security_scan:      runs-on: ubuntu-latest      steps:        - uses: actions/checkout@v3        - name: Run Xygeni Scan          run: xygeni scan \            --rules detect-unsafe-input \            --fail-on-findings          

ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:

  1. Xygeni ಅಸುರಕ್ಷಿತ ಪೈಥಾನ್ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್‌ಗಾಗಿ ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತದೆ.
  2. ಕಂಡುಬಂದಲ್ಲಿ, ಅದು ಶೂನ್ಯವಲ್ಲದ ನಿರ್ಗಮನ ಕೋಡ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ.
  3. CI/CD ಕೆಲಸ ವಿಫಲವಾಗಿದೆ ಎಂದು ಗುರುತಿಸುತ್ತದೆ.
  4. ಸಮಸ್ಯೆ ಬಗೆಹರಿಯುವವರೆಗೆ ಶಾಖೆಯ ರಕ್ಷಣೆಯು ವಿಲೀನವನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ.

ಇದು ಪೈಥಾನ್‌ನಲ್ಲಿ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ, ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹೇಗೆ ಪಡೆಯುವುದು ಎಂಬುದನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ.

ಅಂತಿಮ ಟೇಕ್‌ಅವೇಗಳು

ದೃಢೀಕರಣವಿಲ್ಲದೆ ಪೈಥಾನ್ ಬಳಕೆದಾರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಎಂದಿಗೂ ನಂಬಬೇಡಿ. ಒಂದೇ ಅಸುರಕ್ಷಿತ ಇನ್ಪುಟ್ () ಉಲ್ಲಂಘನೆಗಳು, ನಿಯೋಜನೆ ವೈಫಲ್ಯಗಳು ಅಥವಾ ಪೂರ್ಣ ರಾಜಿಗೆ ಕಾರಣವಾಗಬಹುದು.

ಕಾರ್ಯ ತಂತ್ರ:

  • ಆರಂಭದಿಂದಲೇ ದೃಢೀಕರಿಸಿ:  ಪ್ರಕಾರ ಪರಿವರ್ತನೆ, ಶ್ವೇತಪಟ್ಟಿಗಳು ಮತ್ತು ಲೈಬ್ರರಿಗಳನ್ನು ಅನ್ವಯಿಸಿ ಆರ್ಗ್‌ಪಾರ್ಸ್ or ದೈನ್ಯಶೀಲ ಬಳಕೆದಾರ ಇನ್ಪುಟ್ ಪೈಥಾನ್ ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ ಮೊದಲು.
  • ಸ್ವಯಂಚಾಲಿತ ಪತ್ತೆ:  ಸಂರಚಿಸು pipelineಅಸುರಕ್ಷಿತ ಮಾದರಿಗಳು ಕಂಡುಬಂದಾಗ ವಿಲೀನಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲು s.
  • ಭದ್ರತಾ ದ್ವಾರಗಳೊಂದಿಗೆ ಜಾರಿಗೊಳಿಸಿ:  Xygeni ನಂತಹ ಪರಿಕರಗಳನ್ನು ಸಂಯೋಜಿಸಿ ಸ್ವಯಂಚಾಲಿತ ನಿರ್ಬಂಧಿಸುವಿಕೆ ಸಂರಕ್ಷಿತ ಶಾಖೆಗಳಲ್ಲಿ.
  • ನಿಮ್ಮ ತಂಡಕ್ಕೆ ಶಿಕ್ಷಣ ನೀಡಿ:  ಪೈಥಾನ್‌ನಲ್ಲಿ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಹೇಗೆ ಪಡೆಯುವುದು ಎಂದು ಎಲ್ಲರಿಗೂ ತಿಳಿದಿದೆ ಮತ್ತು ಮೌಲ್ಯೀಕರಣವನ್ನು ಬಿಟ್ಟುಬಿಡುವುದರಿಂದ ಉಂಟಾಗುವ ಅಪಾಯಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ.

ಉತ್ಪಾದನೆಯಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಭದ್ರತೆ ಪ್ರಾರಂಭವಾಗುವುದಿಲ್ಲ.; ನೀವು ಕೋಡ್‌ನ ಮೊದಲ ಸಾಲನ್ನು ಬರೆದ ಕ್ಷಣದಿಂದಲೇ ಅದು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಸುರಕ್ಷಿತ ಇನ್‌ಪುಟ್ ನಿರ್ವಹಣೆಯನ್ನು ನಿಮ್ಮ ಡೀಫಾಲ್ಟ್ ಆಗಿ ಮಾಡಿ.

ಸ್ಕಾ-ಪರಿಕರಗಳು-ಸಾಫ್ಟ್‌ವೇರ್-ಸಂಯೋಜನೆ-ವಿಶ್ಲೇಷಣೆ-ಪರಿಕರಗಳು
ನಿಮ್ಮ ಸಾಫ್ಟ್‌ವೇರ್ ಅಪಾಯಗಳಿಗೆ ಆದ್ಯತೆ ನೀಡಿ, ನಿವಾರಿಸಿ ಮತ್ತು ಸುರಕ್ಷಿತಗೊಳಿಸಿ
ನಿಮ್ಮ ಉಚಿತ ಖಾತೆಯನ್ನು ಪಡೆಯಿರಿ.
ಯಾವುದೇ ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್ ಅಗತ್ಯವಿಲ್ಲ.

ನಿಮ್ಮ ಸಾಫ್ಟ್‌ವೇರ್ ಅಭಿವೃದ್ಧಿ ಮತ್ತು ವಿತರಣೆಯನ್ನು ಸುರಕ್ಷಿತಗೊಳಿಸಿ

Xygeni ಉತ್ಪನ್ನ ಸೂಟ್‌ನೊಂದಿಗೆ