-
Notifications
You must be signed in to change notification settings - Fork 30
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
API endpoint #56
Comments
May I suggest another structure for the API call : |
Sure thing. This makes perfect sense. |
Appreciate you looking into this! Would it be useful to have the nomenclature of the JSON match with the CVSS v4.0 schema for consistency? { And potentially adapt the score and severity based on Threat or Environmental metrics? |
Hi @nickleali, if my PR #59 is accepted, It will certainly facilitate the implementation of an API. For example, it could be done with this kind of const express = require('express');
const app = express();
const port = 3000;
const { CVSS40, Vector } = require('./cvss40');
app.get('/api/v1/compute', (req, res) => {
const vectorString = req.query.vector;
if (!vectorString) {
return res.status(400).json({ error: 'Vector parameter is required' });
}
try {
// Create a new Vector instance with the provided string
const vector = new Vector(vectorString);
// Pass the Vector instance to the CVSS40 constructor
const cvssInstance = new CVSS40(vector);
// Respond with the CVSS instance (including the computed score and severity)
res.json({
score: cvssInstance.score,
severity: cvssInstance.severity,
equivalentClasses: vector.equivalentClasses,
raw: vector.raw,
});
} catch (error) {
console.error('Error processing CVSS vector:', error);
res.status(400).json({ error: 'Invalid CVSS vector', details: error.message });
}
});
app.listen(port, () => {
console.log(`CVSS API listening at http://localhost:${port}`);
}); Then, you can request:
In order to retrieve the {
"score":9.2,
"severity":"Critical",
"equivalentClasses":"001100",
"raw":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:H/E:A"
} This is just an example, and the implementation needs to be discussed with the people in charge, as I don't know what they prefer for deploying the site. Of course, you'd have to add flow limitation, entry verification, etc. |
I'm certainly not someone who should be doing code review, but something like this would work great as an API to the calculator. I will have to check about how this is deployed on the FIRST infrastructure for a hosted version. |
I hope someone who can will read it tho' 😊 |
@n3rada I am sorry I missed the PR. I will ask my colleague who is much better at Javascript to have a look. |
It would be a good idea to have another address which can be queried with a vector and just return a JSON with a result, maybe also copy of provided vector, something like:
https://redhatproductsecurity.github.io/cvss-v4-calculator/api/#CVSS:4.0/AV:A/AC:H/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N)
The text was updated successfully, but these errors were encountered: