Skip to content

[TEST] Enhanced Customer Data Validation to Mitigate Code Injection Risks #39131

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 154 commits into
base: 2.4-develop
Choose a base branch
from

Conversation

in-session
Copy link
Contributor

@in-session in-session commented Aug 31, 2024

Testdrive for:
#39002
#39030
#38345
#38331

This Pull Request introduces several significant improvements to the validation process in Magento:

Centralized Validation for Customer Fields:

The validation logic for customer-related fields (such as names, phone numbers, and addresses) has been moved to global validators. This change ensures that consistent validation rules are applied across the entire application, improving both maintainability and reliability.

Enhanced Field Validation Tests:

The validation tests for customer fields have been significantly extended. This includes more comprehensive checks for various character sets, ensuring that fields such as city names, street addresses, and customer names are validated against a wide range of acceptable characters while preventing invalid inputs.

Implementation of Global Forbidden Patterns:

A new GlobalForbiddenPatterns validator has been introduced to mitigate the risk of code injection. This validator applies a set of global regex patterns designed to detect and block potentially malicious input, thereby enhancing the security of the application.

to fix the issus:

The pull is aimed at all public areas such as Checkout, Register Newsletter and Review, I hope I haven't forgotten anyone

Before:
Checkout:
There was no server-side validation of the fields, which enabled code injection:
39030

Review:
image
image

Contact:
image

After

The patterns from merge #38345 were made globally available and integrated into the quote, this already minimises code injection:
image

However, there are many other fields that do not run through the pattern, so the GlobalForbiddenPatterns was created, which can be activated via the admin:
image

This checks the data again to prevent code injection, for example the company field:
image

Review:
image

Create Account:
image

Copy link

m2-assistant bot commented Aug 31, 2024

Hi @in-session. Thank you for your contribution!
Here are some useful tips on how you can test your changes using Magento test environment.

Add the comment under your pull request to deploy test or vanilla Magento instance:
  • @magento give me test instance - deploy test instance based on PR changes
  • @magento give me 2.4-develop instance - deploy vanilla Magento instance

❗ Automated tests can be triggered manually with an appropriate comment:

  • @magento run all tests - run or re-run all required tests against the PR changes
  • @magento run <test-build(s)> - run or re-run specific test build(s)
    For example: @magento run Unit Tests

<test-build(s)> is a comma-separated list of build names.

Allowed build names are:
  1. Database Compare
  2. Functional Tests CE
  3. Functional Tests EE
  4. Functional Tests B2B
  5. Integration Tests
  6. Magento Health Index
  7. Sample Data Tests CE
  8. Sample Data Tests EE
  9. Sample Data Tests B2B
  10. Static Tests
  11. Unit Tests
  12. WebAPI Tests
  13. Semantic Version Checker

You can find more information about the builds here
ℹ️ Run only required test builds during development. Run all test builds before sending your pull request for review.


For more details, review the Code Contributions documentation.
Join Magento Community Engineering Slack and ask your questions in #github channel.

@in-session
Copy link
Contributor Author

@magento run all tests

@in-session
Copy link
Contributor Author

@magento run all tests

@in-session
Copy link
Contributor Author

@magento run all tests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Checkout address forms allow random code in the name fields
1 participant