优化上传URL类型图片的URL验证

This commit is contained in:
yangjian 2023-07-14 11:40:00 +08:00
parent 5aaff9a106
commit 94474209ae
2 changed files with 20 additions and 0 deletions

View File

@ -6,6 +6,7 @@ from django.contrib.auth.decorators import login_required # 登录需求装饰
from django.utils.translation import gettext_lazy as _
import datetime,time,json,base64,os,uuid
from app_doc.models import Image,ImageGroup,Attachment
from app_doc.utils import validate_url
from app_admin.models import SysSetting
from loguru import logger
import requests
@ -148,6 +149,9 @@ def upload_img(request):
manage_upload = request.FILES.get('manage_upload',None) # 图片管理上传
try:
url_img = json.loads(request.body.decode())['url']
url_img = validate_url(url_img)
if url_img is False:
return JsonResponse({"success": 0, "message": _("无效的URL")})
except:
url_img = None
dir_name = request.POST.get('dirname','')

View File

@ -1,4 +1,7 @@
from app_doc.models import Doc,Project
from django.core.validators import URLValidator
from django.core.exceptions import ValidationError
from urllib.parse import urlparse
# 查找文档的下级文档
def find_doc_next(doc_id):
@ -97,3 +100,16 @@ def find_doc_sibling_sub(doc_id,sort):
previous_doc = find_doc_sibling_sub(subdoc_list[len(subdoc) - 1],sort)
return previous_doc
# 验证URL的有效性以及排除本地URL
def validate_url(url):
try:
validate = URLValidator()
validate(url)
parsed_url = urlparse(url)
if parsed_url.hostname in ['localhost', '127.0.0.1']:
return False
return url
except:
return False