Drupal core integrity
Drupal core file integrity checks, Composer projects included
Drupal publishes no list of hashes for its files. We compute them from the official archive of each version and compare them with the site, whether you installed it from the archive or with Composer.
The problem
With Composer, core files differ from the archive.
Composer installs core from git: the .info.yml files lack the lines drupal.org adds to its archives. On Drupal 10.6 that is 626 files. A naive comparison flags them all as modified.
Sites installed from the archive also keep vendor/ inside the site folder, with thousands of library files to check.
How it works
Hashes from the official archive, in both forms.
- 1
drupal.org archive
We download the archive of the installed version from ftp.drupal.org, the same source Composer uses for modules.
- 2
Two accepted forms
For
.info.ymlfiles only, we accept the archive version and the git version, obtained by removing exactly the block drupal.org adds. - 3
Extra files
We look for files that are not part of the release inside
core/and, for archives, insidevendor/.
In detail
What it covers.
- Drupal 7 (the
includes,misc,modules,themesandscriptsfolders) and 8.9 to 11 - In our tests: zero false positives across 22,269 files of Drupal 10.6 installed from the archive
- A modified core PHP file,
.moduleand.installincluded, is a critical alert settings.php, contributed modules and uploaded files stay out of the comparison- You can approve an intended change: the alert comes back only if the file changes again
FAQ
Frequently asked questions
What if I patch core with Composer?
The file shows as modified, next to the original. If the patch is intended, you approve it.
And after a core update?
We compare files with the archive of the new version. In our real updates from 8.9 to 11.4 the core always came out clean, with a single update notification.
Related features
Goes well with
Try it on your clients' sites.
During the beta we let in a few agencies at a time and set up the first sites with you.