When convenient
Security researchers have no way to reach you
Your site has no security.txt file, the standard place to say who to contact if someone finds a security problem. Adding one takes a few minutes: a plain-text file at /.well-known/security.txt with a contact email and an expiry date.
Security researchers have no way to reach you. There is no security.txt file, the standard place to say who to contact if someone finds a vulnerability.
Ask your developer to add a security.txt file with a contact email. It takes five minutes.
What it means
security.txt is a short plain-text file defined by an internet standard, RFC 9116. It lives at https://example.com/.well-known/security.txt and tells anyone who finds a vulnerability on your site how to report it to you.
EverThread asked for that address and did not find a valid file. Either it returned "not found", or it returned a web page, such as your home page or a styled error page, instead of a plain-text file with a Contact: line.
The .well-known folder name starts with a dot, which is why it is easy to miss. Many file managers hide folders like that by default.
Why it matters
People who find security problems on websites, including researchers and customers who notice something odd, need a way to reach the right person. Without a clear contact, many give up, or send it to a general inbox where it gets lost.
A problem reported to you can be fixed before anyone misuses it. The next person to find the same hole may not bother to tell you.
This is a low-priority item next to certificate or redirect problems. Add it when convenient. It costs nothing and does not change how your site looks or works.
How to check your own site
- Open
https://yourdomain.com/.well-known/security.txtin a browser. - A working file shows a few lines of plain text, including one that starts with
Contact:. If you see a "page not found" message, your home page, or any styled web page, you do not have a valid one. - If you added a file but it is not being picked up, check that it is plain text, not HTML, that it has a line starting with
Contact:, and that it sits inside the.well-knownfolder rather than the top folder.
How to fix it
Any website
- Choose a contact address that someone actually reads. A dedicated address such as
security@yourdomain.comworks well, and it can simply forward to your main inbox. - Create a plain-text file named
security.txtusing the example below. Replace the email address and domain. SetExpiresto a date less than a year away, and add a calendar reminder to update it before then. The official site, securitytxt.org, has a form that builds the file for you. - Upload it into a folder named
.well-knownat the top of your site, so the address ishttps://yourdomain.com/.well-known/security.txt. Create the folder if it does not exist. - Open the address in a browser to confirm it shows your text.
Contact: mailto:security@example.com
Expires: 2027-09-01T00:00:00Z
Preferred-Languages: en
Canonical: https://example.com/.well-known/security.txtWordPress
- WordPress does not create this file. Upload it with your host's file manager or an SFTP app into a
.well-knownfolder inside your WordPress root folder, the one that containswp-config.php. - The folder may already exist if your host uses it for certificate checks. Add your file next to what is there and leave the rest alone.
- Some plugins can create the file for you, but an uploaded file is simpler and does not depend on a plugin staying installed.
Shopify, Squarespace, Wix and other hosted builders
- These platforms generally do not let you place files in the
.well-knownfolder. - If your domain runs through Cloudflare, you can publish the file there instead (see below). Otherwise, check your platform's help pages or ask support whether it offers security.txt.
- Until then, listing a security contact on your contact page is a reasonable fallback, though it does not replace the standard file.
cPanel hosting
- Open "File Manager". Click Settings in the top right and tick "Show Hidden Files (dotfiles)" so you can see
.well-known. - Go into
public_htmland open.well-known, or create it with "+ Folder". - Inside it, click "+ File", name it
security.txt, then right-click it, choose Edit, paste in your lines and save.
Cloudflare
- Cloudflare can serve a security.txt for your domain without any change to your site. Look for the Security.txt option in the Security Center part of the dashboard, fill in your contact and expiry date, and turn it on.
- The dashboard layout changes from time to time. If you cannot find the option, use the dashboard search.
Apache or Nginx
- Place the file at
.well-known/security.txtinside the document root. - Many server configurations deny access to anything whose name starts with a dot. If the file returns 403 or 404, add an exception for
/.well-known/ahead of that rule. The Nginx example below does this.
# Nginx: allow /.well-known/ even if dotfiles are denied elsewhere
location ^~ /.well-known/ {
allow all;
}
What to send your developer
GET /.well-known/security.txt returned 404, or a 2xx response that was HTML, matched the site's catch-all page, or had no Contact: field. Serve it over https as text/plain; charset=utf-8. RFC 9116 requires Contact (a mailto:, https: or tel: URI) and Expires (an RFC 3339 timestamp, recommended less than a year ahead). Optional fields include Policy, Acknowledgments, Preferred-Languages, Canonical, Encryption and Hiring, and the file may be signed with an OpenPGP cleartext signature. A copy or redirect at /security.txt is allowed for older tools. Automate the Expires refresh in your deploy, since readers are told to treat an expired file as stale.
Common questions
Will this attract hackers?
No. The file only says how to contact you. Attackers do not need an invitation, and the people who read security.txt are mostly the ones trying to warn you.
What if I get reports I do not understand?
Forward them to your developer or hosting company. Some messages are low-effort reports that ask for payment for minor issues. You are not obliged to pay for reports you did not ask for, and you can say so in a policy page linked from the file.
Why does it need an expiry date?
So readers can tell the contact details are still current. Contacts go stale when staff and email addresses change. Update the date each year, and check the email address still works when you do.
Can I put it at /security.txt instead?
The standard location is /.well-known/security.txt, and that is where people look first. A copy or redirect at /security.txt is allowed for older tools, but the .well-known address is the one that counts.