1
0

tex: extend section on hibp integration

This commit is contained in:
surtur 2023-08-18 18:03:55 +02:00
parent 7e4fcb8d95
commit 5ddcd344d8
Signed by: wanderer
SSH Key Fingerprint: SHA256:MdCZyJ2sHLltrLBp0xQO0O1qTW9BT/xl5nXkDvhlMCI
2 changed files with 38 additions and 14 deletions

@ -705,22 +705,38 @@ records would be dropped entirely.
Troy Hunt's \textbf{Have I Been Pwned?} online service Troy Hunt's \textbf{Have I Been Pwned?} online service
(\url{https://haveibeenpwned.com/}) has been chosen as the online source of (\url{https://haveibeenpwned.com/}) has been chosen as the online source of
compromised data. The service offers public APIs that are protected by API keys compromised data. The service offers public APIs, which were originally (and it
due to abuse-prevention reasons. was the intention of their author that they stay that way) provided free of
charge and with little-to-no rate-limiting. A major overhaul in this regard has
been revealed in November of 2022, where in addition to a new rate-limit
system, different-levels-of-symbolic fees were introduced to obtain the API
keys. These Apparently, the top consumers of the API seemed to utilise it
orders of magnitude more than the average person, which led Hunt to devising a
new, tiered API access system in which the \emph{little guys} would not be
subsidising the \emph{big guys}\cite{hibpBillingChanges}. Additionally, the
symbolic fee of \$3.50/mo for the entry-level, 10 requests per minute API key
was meant to serve as a small barrier for (mis)users with nefarious purposes,
but pose practically no obstacle for \emph{legitimate} users, which is entirely
reasonable.
The application's \texttt{hibp} module and database representation models The application's \texttt{hibp} module and database representation attempts to
the values returned by this API, which allows searching in large breaches using model the values returned by this API and declare actions to be performed upon
email addresses. the data, which is what facilitates the breach search functionality in the
program.
The architecture there is relatively simple: the application administrator The architecture is relatively simple: the application administrator configures
configures an API key for the HIBP service, the user enters the query an API key for the HIBP service via the management interface, the user enters
parameters, the application constructs a query, calls the API and waits for a the query parameters and the application then constructs the API call that is
response. As the API is rate-limited based on the key supplied, this can pose sent to the API, awaiting the response. As the API is rate-limited
an issue and it has not been fully resolved in the UI. The application then (individually, based on the API key supplied), this \emph{could} pose an issue
parses the returned data and binds it to the local model for validation. If at high utilisation times, and thus needs to be handled in the backend as well
that goes well, the data is saved into the database as a cache and the search as in the UI.
query is performed on the saved data. If it returns anything, it is displayed
to the user for browsing. After a response from the API server arrives, the application parses the
returned data and attempts to \emph{bind} it to the pre-programmed \emph{model}
for validation. If the data can be successfully validated, it is saved into the
database as a cache and the search query is performed on the saved data. The
result is then displayed to the user for browsing.
\n{1}{Deployment recommendations}\label{sec:deploymentRecommendations} \n{1}{Deployment recommendations}\label{sec:deploymentRecommendations}

@ -413,4 +413,12 @@ institution = {International Organization for Standardization}
note={{Available from: \url{https://developers.redhat.com/blog/2019/01/15/podman-managing-containers-pods} [viewed 2023-07-24]}} note={{Available from: \url{https://developers.redhat.com/blog/2019/01/15/podman-managing-containers-pods} [viewed 2023-07-24]}}
} }
@misc{hibpBillingChanges,
author = {{Troy Hunt}},
year = 2022,
title = {{The Have I Been Pwned API Now Has Different Rate Limits and Annual Billing}},
howpublished = {[online]},
note={{Available from: \url{https://www.troyhunt.com/the-have-i-been-pwned-api-now-has-different-rate-limits-and-annual-billing/} [viewed 2023-08-15]}}
}
% =========================================================================== % % =========================================================================== %