fix security concerns

This commit is contained in:
Her Email 2023-11-14 22:56:37 -05:00 committed by Henri Dickson
parent b63e92c336
commit d96f681e39
4 changed files with 11 additions and 7 deletions

View file

@ -14,6 +14,7 @@ from typing import Callable, Type
import django_rq
import requests
from validators import url as url_validate
from .models import ExternalResource, IdealIdTypes, IdType, Item, SiteName
@ -283,7 +284,9 @@ class SiteManager:
@staticmethod
def get_site_by_url(url: str) -> AbstractSite | None:
if not url:
if not url or not url_validate(
url, skip_ipv6_addr=True, skip_ipv4_addr=True, may_have_port=False
):
return None
cls = next(
filter(lambda p: p.validate_url(url), SiteManager.registry.values()), None

View file

@ -36,8 +36,8 @@ class Goodreads(AbstractSite):
WIKI_PROPERTY_ID = "P2968"
DEFAULT_MODEL = Edition
URL_PATTERNS = [
r".+goodreads.com/.*book/show/(\d+)",
r".+goodreads.com/.*book/(\d+)",
r".+goodreads\.com/.*book/show/(\d+)",
r".+goodreads\.com/.*book/(\d+)",
]
@classmethod
@ -125,7 +125,7 @@ class Goodreads_Work(AbstractSite):
ID_TYPE = IdType.Goodreads_Work
WIKI_PROPERTY_ID = ""
DEFAULT_MODEL = Work
URL_PATTERNS = [r".+goodreads.com/work/editions/(\d+)"]
URL_PATTERNS = [r".+goodreads\.com/work/editions/(\d+)"]
@classmethod
def id_to_url(cls, id_value):

View file

@ -12,9 +12,9 @@ from catalog.common.downloaders import *
from catalog.models import *
from journal.models import *
re_list = r"^https://www.goodreads.com/list/show/\d+"
re_shelf = r"^https://www.goodreads.com/review/list/\d+[^?]*\?shelf=[^&]+"
re_profile = r"^https://www.goodreads.com/user/show/(\d+)"
re_list = r"^https://www\.goodreads\.com/list/show/\d+"
re_shelf = r"^https://www\.goodreads\.com/review/list/\d+[^?]*\?shelf=[^&]+"
re_profile = r"^https://www\.goodreads\.com/user/show/(\d+)"
gr_rating = {
"did not like it": 2,
"it was ok": 4,

View file

@ -43,3 +43,4 @@ setproctitle
tqdm
typesense
urlman
validators