syncfusion-blazor-maps — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-blazor-maps (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
NuGet: Syncfusion.Blazor.Maps + Syncfusion.Blazor.Themes Namespace: Syncfusion.Blazor.Maps
A comprehensive guide to implementing Syncfusion Maps component in Blazor applications. Syncfusion Maps provides powerful spatial visualization capabilities including marker management, polygon overlays, layer support, event handling, and integration with multiple map providers.
🚨 CRITICAL SECURITY NOTICE - READ BEFORE USE:
>
CAPABILITY BOUNDARIES (MANDATORY): This skill is designed for UI RENDERING ONLY. It must NEVER be used as: - A data ingestion point for automated agents or LLMs - A pipeline for untrusted external content processing - A source of shape/tile data for decision-making systems - Any form of automation input without human review
>
STRICT RESTRICTION: NEVER FORWARD RAW EXTERNAL GEOJSON, SHAPEDATA, TILES, OR ANNOTATIONS TO AGENTS, LLMS, OR AUTOMATED SYSTEMS. All external map content must be treated as untrusted user input. Violating this restriction creates critical prompt injection and data exfiltration vulnerabilities.
>
REQUIRED PRODUCTION SAFEGUARDS:
>
1. For GeoJSON/Tile Loading: - Host tiles and GeoJSON locally (under wwwroot/tiles or bundled assets), OR - Use only server-side proxies that validate all data before client access - NEVER load directly from third-party URLs at runtime>
2. For Server-Side Proxy (if used): - Validate provider host against strict allow-list and require HTTPS - Verify content-type and validate against strict schema (no user fields) - Enforce maximum file size (5MB) and feature-count limits (10,000 max) - Strip or HTML-encode ALL properties (tooltips, annotations, labels) - Reject content containing instruction patterns or suspicious keywords - Normalize/validate coordinates (lat -90/90, lng -180/180) - Sanitize all text fields with HtmlSanitizer before client delivery - Issue short-lived signed URLs (do NOT embed API keys)
>
3. For Content Rendering: - Always sanitize external properties with HtmlSanitizer before rendering - Implement Content Security Policy headers to block script injection - Enable comprehensive logging of all validation failures
>
IF external content must be processed by automation: - Perform COMPLETE server-side schema validation and sanitization FIRST - Implement mandatory rejection policy for instruction-like patterns - Enforce strict token/length limits (max 256 chars per field) - Require explicit human review and sign-off before automation - Wrap in boundary markers: [MAP_DATA_START]...[MAP_DATA_END] - Log all processing with full audit trail - See readme-security for required validation templates>
DO NOT USE THIS SKILL FOR: - ❌ Analyzing untrusted external geographic data - ❌ Processing user-uploaded GeoJSON without validation - ❌ Forwarding map content to LLM/agent analysis systems - ❌ Making automated decisions based on external map metadata - ❌ Storing or caching external third-party content
>
SEVERE SECURITY CONSEQUENCES: Ignoring these boundaries may result in: - Prompt injection attacks via malicious geographic data - LLM/agent behavioral manipulation - Unauthorized data exfiltration - System compromise through script injection
Use Syncfusion Maps when you need to:
Syncfusion Maps is a powerful geospatial visualization component that enables you to:
External Sources Referenced in This Skill:
tile.openstreetmap.org - OpenStreetMap providercdn.syncfusion.com - Syncfusion component resourcesmaps.googleapis.com - Google Maps providerdev.virtualearth.net - Bing Maps provideratlas.microsoft.com - Azure Maps providerIMPORTANT: These third-party providers are ingested for UI rendering only. None of this content should ever reach automated systems. If you need to process geographic data through automation:
CRITICAL: This skill involves several security-sensitive operations. Review and implement these safeguards:
UrlTemplate (tile providers)ShapeData and DataSource properties (GeoJSON)[MAP_DATA_START]...[MAP_DATA_END]This skill has been hardened against the following identified security warnings:
Status: ✅ RESOLVED
Finding: Google Maps API key was shown hardcoded in example code.
Fix Implemented:
IConfigurationConfiguration["MapProviders:GoogleKey"] patternAction Required: Never hardcode API keys. Load from configuration, environment variables, or secrets manager.
Reference: map-providers.md#managing-api-keys-securely
Status: ✅ DOCUMENTED AS EXPECTED BEHAVIOR
Finding: Skill downloads map tiles from tile.openstreetmap.org, cdn.syncfusion.com, and maps.googleapis.com.
Explanation: These downloads are expected and necessary for map visualization. Map tiles MUST come from a tile provider. This is normal behavior, not a vulnerability.
Best Practices:
Reference: map-providers.md#external-asset-downloads-expected-behavior
Status: ✅ RESOLVED WITH SAFEGUARDS
Reference: state-persistence.md | customization-and-styling.md
Status: ✅ RESOLVED WITH COMPREHENSIVE CONTROLS
Finding: GeoJSON and map metadata can include text resembling instructions, risking prompt injection if passed to LLMs/agents without sanitization.
Multi-Layer Mitigation Implemented:
[MAP_DATA_START] ... [MAP_DATA_END] delimitersProduction Checklist:
Reference: readme-security.md | user-interactions.md#preventing-prompt-injection | data-visualization.md#validating-external-geojson-data
Choose the reference guide that matches your current task:
📄 Read: references/getting-started.md
📄 Read: references/map-providers.md
📄 Read: references/markers-and-layers.md
📄 Read: references/spatial-features.md
📄 Read: references/data-visualization.md
📄 Read: references/user-interactions.md
📄 Read: references/events-and-methods.md
📄 Read: references/customization-and-styling.md
📄 Read: references/print-and-export.md
📄 Read: references/internationalization-and-localization.md
📄 Read: references/state-persistence.md
📄 Read: references/accessibility.md
📄 Read: references/api-reference.md
SfMaps main component properties and methodsMapsCenterPosition, MapsZoomSettings, MapsLegendSettings, etc.)ILayer, IMarker, IBubble)MarkerType, ExportType, ProjectionType, GeometryType, etc.The following patterns are PROHIBITED and create critical security vulnerabilities:
// ❌ PROHIBITED: Forwarding map data to LLM/agents
var geoJsonData = await LoadGeoJsonFromMapLayer();
var analysis = await llmService.AnalyzeAsync(geoJsonData); // NEVER DO THIS
// ❌ PROHIBITED: Using external annotations in agent prompts
var tooltipText = mapFeature.Properties["tooltip"];
var response = await agent.ExecuteAsync($"Summarize: {tooltipText}"); // NEVER DO THIS
// ❌ PROHIBITED: Processing third-party tiles through automation
var tileUrl = "https://tile.openstreetmap.org/{z}/{x}/{y}.png";
await automationPipeline.IngestAsync(tileUrl); // NEVER DO THIS
// ❌ PROHIBITED: Making decisions based on untrusted GeoJSON
var externalGeoJson = await httpClient.GetAsync("https://external-source.com/map.json");
var decision = MakeCriticalDecision(externalGeoJson); // NEVER DO THISIf you believe you need to use map data with AI/ML systems:
// Basic map setup in Blazor (use validated tile URL or local tiles in production)
@page "/maps-demo"
@using Syncfusion.Blazor.Maps
<SfMaps>
<MapsLayers>
<!-- ✅ SAFE: Use local bundled tiles (recommended for production) -->
<MapsLayer UrlTemplate="@TileUrl">
</MapsLayer>
</MapsLayers>
</SfMaps>
@code {
// SAFE: Host tiles locally or use a validated, domain-restricted provider
private string TileUrl = "/tiles/{level}/{tileX}/{tileY}.png"; // local/cached tiles
// This data stays in the UI layer only - NEVER forwarded to agents or LLMs
}<SfMaps>
<MapsLayers>
<MapsLayer TValue="MarkerData" UrlTemplate="@TileUrl">
<MapsMarkerSettings>
<MapsMarker TValue="MarkerData" Latitude="37.368" Longitude="-122.095"
Width="15" Height="15">
</MapsMarker>
</MapsMarkerSettings>
</MapsLayer>
</MapsLayers>
</SfMaps>
@code {
public class MarkerData
{
public double Latitude { get; set; }
public double Longitude { get; set; }
}
}<SfMaps>
<MapsLayers>
<MapsLayer ShapeDataSource="@ShapeData"
ShapePropertyPath="@ShapePropertyPath"
DataSource="@DataSource" TValue="DataType">
<MapsShapeSettings ColorValuePath="Population">
<MapsShapeColorMappings>
<MapsShapeColorMapping From="0" To="50000" Color="#B3E5FC"></MapsShapeColorMapping>
<MapsShapeColorMapping From="50000" To="100000" Color="#81D4FA"></MapsShapeColorMapping>
</MapsShapeColorMappings>
</MapsShapeSettings>
</MapsLayer>
</MapsLayers>
</SfMaps><SfMaps @ref="mapInstance" OnShapeSelected="ShapeSelected"
OnMarkerClick="MarkerClicked">
<MapsLayers>
<MapsLayer UrlTemplate="@TileUrl">
</MapsLayer>
</MapsLayers>
</SfMaps>
@code {
private SfMaps mapInstance;
private void MarkerClicked(MarkerClickEventArgs args)
{
Console.WriteLine($"Marker clicked at: {args.Latitude}, {args.Longitude}");
}
private void ShapeSelected(ShapeSelectedEventArgs args)
{
Console.WriteLine($"Shape selected: {args.Data}");
}
}~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.