https://github.com/digipost/digipost-html-validator
Validering og sanitering av html sendt inn til Digipost
https://github.com/digipost/digipost-html-validator
Last synced: about 2 months ago
JSON representation
Validering og sanitering av html sendt inn til Digipost
- Host: GitHub
- URL: https://github.com/digipost/digipost-html-validator
- Owner: digipost
- License: apache-2.0
- Created: 2019-11-21T09:05:45.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-11-16T13:48:08.000Z (over 1 year ago)
- Last Synced: 2023-11-16T14:40:59.340Z (over 1 year ago)
- Language: Java
- Homepage:
- Size: 63.5 KB
- Stars: 2
- Watchers: 10
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://maven-badges.herokuapp.com/maven-central/no.digipost/digipost-html-validator)

[](https://github.com/digipost/digipost-html-validator/blob/main/LICENCE)# digipost-html-validator
Validering og sanitering av html sendt inn til digipost.`DigipostValidatingHtmlSanitizer` vil sanitere html-dokumentet ditt. Vi anbefaler at du sjekker ditt dokument mot denne vaskingen og justerer ditt dokument til det er minimalt med forskjell (diff).
Digipost vil i alle tilfeller utføre samme sjekk og vask ved innsending og eventuelle videresendinger brevmottagere skulle ville gjøre.
Noen av kravene til html:
* Ingen javascript.
* Ingen eksterne avhengigheter som skal lastes ned (bilder, css, font-er etc.). Alt må inlines.
* Lovlige html-tags og css-atributter er definert gjennom `ApiHtmlValidatorPolicy` (whitelist).Se:
[ApiHtmlValidatorPolicy.java](https://github.com/digipost/digipost-html-validator/blob/master/src/main/java/no/digipost/sanitizing/internal/ApiHtmlValidatorPolicy.java)
[StyleElementPreprocessor.java](https://github.com/digipost/digipost-html-validator/blob/master/src/main/java/no/digipost/sanitizing/internal/StyleElementPreprocessor.java)# Eksempel
`DigipostValidatingHtmlSanitizer.sanitize` er en BiFunction som tar inn ditt html-dokument som string sammen med en PolicyFactory og returnerer den vaskede html-en.
Vi har en PolicyFactory-implementasjon i Digipost
* `PolicyFactoryProvider.API_HTML`
```java
String inputHtml = [...] // Ditt html-dokumentString sanitizedHtml = DigipostValidatingHtmlSanitizer.sanitize(
inputHtml
, PolicyFactoryProvider.API_HTML
);
```Hvis din html har feil i html vil funksjonen kaste `HTMLValidationException`. Og `CSSValidationException` hvis det er feil i css. Begge exception-typene
arver fra `ValidationException` som er en `RuntimeException` og har metoden `getValidationErrors` for å hente ut feilene i dokumentet.
Se `DigipostValidatingHtmlSanitizerTest` for basic eksempel.Det går også an bruke en instans av `HtmlValidator.java`:
```java
HtmlValidationResult validationResult = new HtmlValidator().valider("".getBytes());if(validationResult.okForWeb){
//Cool! Det kan sendes inn
} else {
System.err.println(validationResult.toString()); // vil skrive ut meldingene fra exception
}if(validationResult.hasDiffAfterSanitizing){ // Din html er endret på og er fremdele ok å sende inn.
System.out.println(validationResult.toString()); // vil skrive ut den nye html-en som du så kan bruke til å endre din html.
}
```# Hvorfor vasker vi HTML-kode som blir sendt til Digipost
Generelt endrer vi ikke på innhold som blir sendt gjennom Digipost. Men HTML-validering er vanskelig. Å sørge
for at HTML er vasket er mye enklere (se [https://github.com/OWASP/java-html-sanitizer/blob/master/docs/html-validation.md](https://github.com/OWASP/java-html-sanitizer/blob/f1c32172208e29c970d2cdfdd6be48d6d44d3646/docs/html-validation.md).