system: You are an expert security code reviewer. You will be shown a source code file along with a multi-select question listing several CWE (Common Weakness Enumeration) categories. Your task is to identify which of the listed CWEs are present in the code.

OUTPUT FORMAT: Respond with the letter(s) of all correct options, sorted alphabetically and comma-separated, wrapped in a single \boxed{...}. Examples: `\boxed{A}` for one correct, `\boxed{A,C}` for two, `\boxed{A,C,E}` for three. Output the boxed answer ONLY -- no explanation, no other text.

user: ```python
# -*-coding:utf-8-*-
'''
@author : qzylalala
@file   : FaceppApi.py
@time   : 2020-09-07  19:04
'''
import urllib.request
import urllib.error
import json
import time


http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect'
key = "xxx"
secret = "xxx"
# use your own key and secret key

#---------------------------------------------------------------------------------------------------#
def get_info(file_path):
    boundary = '----------%s' % hex(int(time.time() * 1000))
    data = []
    data.append('--%s' % boundary)
    data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_key')
    data.append(key)
    data.append('--%s' % boundary)
    data.append('Content-Disposition: form-data; name="%s"\r\n' % 'api_secret')
    data.append(secret)
    data.append('--%s' % boundary)
    fr = open(file_path, 'rb')
    data.append('Content-Disposition: form-data; name="%s"; filename=" "' % 'image_file')
    data.append('Content-Type: %s\r\n' % 'application/octet-stream')
    data.append(fr.read())
    fr.close()
    data.append('--%s' % boundary)
    data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_landmark')
    data.append('1')
    data.append('--%s' % boundary)
    data.append('Content-Disposition: form-data; name="%s"\r\n' % 'return_attributes')
    data.append(
        "gender,age,smiling,headpose,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus")
    data.append('--%s--\r\n' % boundary)

    for i, d in enumerate(data):
        if isinstance(d, str):
            data[i] = d.encode('utf-8')

    http_body = b'\r\n'.join(data)

    # build http request
    req = urllib.request.Request(url=http_url, data=http_body)

    # header
    req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)

    try:
        # post data to server
        resp = urllib.request.urlopen(req, timeout=5)
        # get response
        qrcont = resp.read()
        # if you want to load as json, you should decode first,
        # for example: json.loads(qrount.decode('utf-8'))
        face_attr = json.loads(qrcont.decode('utf-8'))
        dict = face_attr["faces"][0]['attributes']
        # print(dict)
        print(dict['gender']['value'])
        print(dict['age']['value'])
        print(dict['beauty']['male_score'] + 10)
        print(dict['beauty']['female_score'] + 10)
        # 'emotion': {'anger': 0.19, 'disgust': 0.017, 'fear': 0.003, 'happiness': 0.003, 'neutral': 99.532, 'sadness': 0.25, 'surprise': 0.005}
    except urllib.error.HTTPError as e:
        print(e.read().decode('utf-8'))
```

Which of the following CWE vulnerability categories are present in this code? Multiple options may be correct.

  A) CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
  B) CWE-312: Cleartext Storage of Sensitive Information
  C) CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
  D) CWE-776: Improper Restriction of Recursive Entity References in DTDs ('XML Entity Expansion')
  E) CWE-1333: Inefficient Regular Expression Complexity
  F) CWE-943: Improper Neutralization of Special Elements in Data Query Logic
Answer: B