GET请求中的Django SQL注入

2024-10-08 18:31:37 发布

您现在位置:Python中文网/ 问答频道 /正文

一个SAST工具基于SQL注入的理由将下面的代码标记为易受攻击,我想知道为什么它显示出易受攻击尽管Django文档说所有输入都是类型安全的转换/错误的输入在后端被转义,文件是视图.py公司名称:

def infopanel(request):
item_id     = request.GET.get('item_id','')
change_key  = request.GET.get('change_key','')
context     = request.GET.get('context','')
if item_id == '' or change_key == '':
    return render_to_response('emailtrackergenericfailure.html',{'errorcode':"invalid message parameters (item_id, change_key, and or folder)"},context_instance=RequestContext(request))

# The exchange server item id sometimes has a '+' character in it.
# '+' is read as a ' ' due to the way the GET parameters are formatted.
# Change all spaces in the strings back to a '+' to repair this.
item_id     = replace(item_id   ,' ','+')
change_key  = replace(change_key,' ','+')

#return render_to_response('emailtrackergenericfailure.html',{'errorcode':'ahhhh'},context_instance=RequestContext(request))    

message = getMessage(item_id,change_key)
# print "****************** MESSAGE ******************"
# print message
# print "**************** END MESSAGE ****************"


#return render_to_response('emailtrackergenericfailure.html',{'errorcode':message},context_instance=RequestContext(request))    

# Find the email message object and mark it as read
mssg = None
folder = ""
try: 
    mssg = Inbox.objects.get(item_id__exact=item_id,change_key=change_key)
    folder = 'inbox'
except ObjectDoesNotExist:
    try:
        mssg = TicketEmail.objects.get(item_id=item_id,change_key=change_key)
        folder = 'ticketemails'
    except ObjectDoesNotExist:
        try:
            mssg = SentItems.objects.get(item_id=item_id,change_key=change_key)
            folder = 'sentitems'
        except ObjectDoesNotExist:
            try:
                mssg = RequestEmail.objects.get(item_id=item_id,change_key=change_key)
                folder = 'requests'
            except ObjectDoesNotExist:
                try:
                    mssg = DeletedItems.objects.get(item_id=item_id,change_key=change_key)
                    folder = 'deleteditems'
                except ObjectDoesNotExist:
                    return render_to_response('emailtrackergenericfailure.html',{'errorcode':'message not found in database.'},context_instance=RequestContext(request))

# Check if the exchange server returned an error
if message.GetItemResponseMessage._ResponseClass != 'Success':
    mssg.read='True'
    mssg.save()
    return render_to_response('emailtrackergenericfailure.html',{'errorcode':message.GetItemResponseMessage.ResponseCode},context_instance=RequestContext(request))


if mssg.read != 'True':
    new_change_key = markAsRead(item_id,change_key)
    mssg.read='True'
    mssg.change_key=new_change_key
    mssg.save()

Tags: tokeyidmessagegetreturnresponserequest

热门问题