feat: add secure relative image resolving #389
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi team,
Here is the implementation for relative image path resolving. Any feedback would be appreciated. Thanks!
Summary
In the current implementation,
<image>href values are only resolved when they start withhttp://orhttps://, which makes it difficult to work with local or same-origin assets.This PR addresses this limitation by introducing an opt-in feature to resolve relative image URLs, related to the discussion in issue #229. By providing a
baseUrl, you can now use relative paths like./logo.png, which will be resolved against it. The default behavior remains unchanged to ensure backward compatibility.Key Changes
New option:
imageResolving(enableRelativePaths,baseUrl)URL helpers (via
url = "<2.5") enforce basic traversal checks..%2e/may still slip past after joining, so downstream callers should verify the final URL.Tests
__test__/index.spec.tsand__test__/wasm.spec.tsgain 12 new scenarios.Usage
Testing
yarn test: 49 passed / 1 skippedyarn test:wasm: 38 passed / 1 skippedBuild Artifacts
wasm/index_bg.wasm: