Просмотр исходного кода

https://github.com/openNAMU/openNAMU/issues/1917

2du 2 лет назад
Родитель
Сommit
0da7f65071
4 измененных файлов с 18 добавлено и 12 удалено
  1. 2 2
      lang/ko-KR.json
  2. 1 1
      route/login_login.py
  3. 13 7
      route/tool/func.py
  4. 2 2
      version.json

+ 2 - 2
lang/ko-KR.json

@@ -208,7 +208,7 @@
     "name": "이름",
     "period": "기간",
     "writer": "작성자",
-    "long_id_error": "ID는 32자보다 짧아야 합니다.",
+    "long_id_error": "ID는 128자보다 짧아야 합니다.",
     "edit_record_error": "사유는 500자를 넘을 수 없습니다.",
     "revert": "복원",
     "discussion_authority": "토론 관리 권한",
@@ -231,7 +231,7 @@
     "file_name": "파일명",
     "close_discussion": "닫힌 토론",
     "language": "언어",
-    "id_char_error": "오직 한글과 알파벳, 숫자만 사용 가능합니다.",
+    "id_char_error": "XSS 문자(부등호, 따옴표)는 사용 불가능합니다.",
     "id_filter_add": "ID 필터 추가",
     "skin": "스킨",
     "user_head": "사용자 <HEAD>",

+ 1 - 1
route/login_login.py

@@ -25,7 +25,7 @@ def login_login_2():
             user_data = {}
 
             curs.execute(db_change(
-                'select name, data from user_set where id = ? and name = "pw" or name = "encode"'
+                'select name, data from user_set where id = ? and (name = "pw" or name = "encode")'
             ), [user_id])
             sql_data = curs.fetchall()
             if not sql_data:

+ 13 - 7
route/tool/func.py

@@ -670,6 +670,15 @@ def update(ver_num, set_data):
                     'insert into user_notice (id, name, data, date, readme) values (?, ?, ?, ?, "")'
                 ), [str(user_alarm_count[db_data[0]]), db_data[0], db_data[1], db_data[2]])
 
+        if ver_num < 3500372:
+            # ID 글자 확인 호환용
+            curs.execute(db_change('insert into html_filter (html, kind, plus, plus_t) values (?, ?, ?, ?)'), [
+                r'(?:[^A-Za-zㄱ-힣0-9])',
+                'name',
+                '',
+                ''
+            ])
+
         conn.commit()
 
         print('Update completed')
@@ -1675,8 +1684,8 @@ def do_user_name_check(user_name):
     with get_db_connect() as conn:
         curs = conn.cursor()
 
-        # ID 글자 확인
-        if re.search(r'(?:[^A-Za-zㄱ-힣0-9])', user_name):
+        # XSS 필터
+        if html.escape(user_name) != user_name:
             return 1
 
         # ID 필터
@@ -1687,8 +1696,8 @@ def do_user_name_check(user_name):
             if check_r.search(user_name):
                 return 1
 
-        # ID 길이 제한 (32글자)
-        if len(user_name) > 32:
+        # ID 길이 제한 (128글자)
+        if len(user_name) > 128:
             return 1
         
         return 0
@@ -2673,9 +2682,6 @@ def re_error(data):
                 data = load_lang('error_skin_set')
             elif num == 6:
                 data = load_lang('same_id_exist_error')
-            elif num == 7:
-                # 폐지
-                data = load_lang('long_id_error')
             elif num == 8:
                 data = load_lang('long_id_error') + '<br>' + load_lang('id_char_error') + ' <a href="/name_filter">(' + load_lang('id_filter_list') + ')</a>'
             elif num == 9:

+ 2 - 2
version.json

@@ -1,7 +1,7 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.6-RC5-dev3",
-        "c_ver" : "3500371",
+        "r_ver" : "v3.4.6-RC5-dev4",
+        "c_ver" : "3500372",
         "s_ver" : "3500111"
     }
 }