diff --git a/layouts/partials/tip-of-the-week.html b/layouts/partials/tip-of-the-week.html
index b17d0e26..a1788af3 100644
--- a/layouts/partials/tip-of-the-week.html
+++ b/layouts/partials/tip-of-the-week.html
@@ -19,4 +19,4 @@
A useful tip from the MISP community
-
+
diff --git a/static/data/misp-tip-of-the-week.json b/static/data/misp-tip-of-the-week.json
new file mode 100644
index 00000000..ecc59cfd
--- /dev/null
+++ b/static/data/misp-tip-of-the-week.json
@@ -0,0 +1,55 @@
+{
+ "source": "https://github.com/cudeso/misp-tip-of-the-week",
+ "tips": [
+ {
+ "title": "Protect your API key",
+ "tip": "Treat your MISP authentication key like a password: never put it in source code, screenshots, tickets, or chat messages. Use a secrets manager or an environment variable, and rotate the key if it may have been exposed.",
+ "url": "https://www.misp-project.org/best-practices-for-misp-api-key-management/"
+ },
+ {
+ "title": "Use warninglists before acting on indicators",
+ "tip": "Enable and regularly update MISP warninglists. They help analysts spot indicators that are likely to be benign, broadly shared, or otherwise unsuitable for automatic blocking.",
+ "url": "https://github.com/MISP/misp-warninglists"
+ },
+ {
+ "title": "Add context with taxonomies",
+ "tip": "Apply taxonomy tags to describe confidence, sharing restrictions, workflow state, and threat context consistently. Machine-readable tags make events easier to filter and automate.",
+ "url": "https://www.misp-project.org/taxonomies.html"
+ },
+ {
+ "title": "Model related attributes as objects",
+ "tip": "Use MISP objects when several attributes describe one thing, such as a file, email, or network connection. Objects preserve the relationship between the attributes and make the data easier to reuse.",
+ "url": "https://www.misp-project.org/objects.html"
+ },
+ {
+ "title": "Review distribution before publishing",
+ "tip": "Check the event and attribute distribution settings before publishing. Choose the narrowest sharing scope that still reaches the intended community, especially for sensitive information.",
+ "url": "https://www.misp-project.org/datamodels/"
+ },
+ {
+ "title": "Use sightings to keep intelligence current",
+ "tip": "Record sightings when an indicator is observed, no longer observed, or determined to be a false positive. Sighting information helps the community assess relevance without duplicating events.",
+ "url": "https://www.misp-project.org/datamodels/"
+ },
+ {
+ "title": "Prefer proposals when suggesting changes",
+ "tip": "Use proposals to recommend changes to another organisation's event. The event owner can review the suggestion without collaborators silently replacing the original information.",
+ "url": "https://www.misp-project.org/documentation/"
+ },
+ {
+ "title": "Keep feeds selective",
+ "tip": "Filter feeds to the use cases your organisation can act on. A smaller, relevant dataset is usually more valuable than importing every available indicator.",
+ "url": "https://www.misp-project.org/feeds/"
+ },
+ {
+ "title": "Publish complete events",
+ "tip": "Add a clear event title, an informative analysis state, dates, tags, and references before publishing. Good context helps recipients understand why the indicators matter.",
+ "url": "https://www.misp-project.org/datamodels/"
+ },
+ {
+ "title": "Automate with PyMISP",
+ "tip": "Use PyMISP rather than building raw HTTP requests for Python integrations. It provides maintained helpers for authentication, events, attributes, objects, searches, and error handling.",
+ "url": "https://github.com/MISP/PyMISP"
+ }
+ ]
+}
diff --git a/static/js/tip-of-the-week.js b/static/js/tip-of-the-week.js
index fb90b555..ba25bacb 100644
--- a/static/js/tip-of-the-week.js
+++ b/static/js/tip-of-the-week.js
@@ -1,7 +1,8 @@
(function () {
"use strict";
- var sourceUrl = "https://raw.githubusercontent.com/cudeso/misp-tip-of-the-week/main/misp-tip-of-the-week.json";
+ var scriptElement = document.currentScript;
+ var sourceUrl = scriptElement && scriptElement.dataset.tipsUrl;
var repositoryUrl = "https://github.com/cudeso/misp-tip-of-the-week";
var titleElement = document.getElementById("tip-of-the-week-title");
var textElement = document.getElementById("tip-of-the-week-text");
@@ -14,6 +15,10 @@
return;
}
+ if (!sourceUrl) {
+ sourceUrl = "/data/misp-tip-of-the-week.json";
+ }
+
function firstString(object, keys) {
for (var i = 0; i < keys.length; i += 1) {
if (typeof object[keys[i]] === "string" && object[keys[i]].trim()) {