Skip to content

Commit 3693441

Browse files
committed
Adding complete whitelist for western and non-western characters. Do not use Russian word for Joker for now.
1 parent 254379f commit 3693441

File tree

3 files changed

+54
-5
lines changed

3 files changed

+54
-5
lines changed

scripts/convert.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,10 @@ def parse_arguments(input_args: List[str]) -> argparse.Namespace:
359359
def is_valid_string_argument(argument: str) -> str:
360360
if len(argument) > 255:
361361
raise argparse.ArgumentTypeError("The option can not have more the 255 char.")
362-
if not re.match(r"^[A-Za-zА-Яа-я0-9._-]+$", argument):
362+
if not re.match(
363+
r"^[\u0600-\u06FF\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF\uFDF2\uFDF3\uFDF4\uFDFD\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FFF\uFF66-\uFF9Fー々〆〤\u3400-\u4DBF\uF900-\uFAFF\u0900-\u097F\u0621-\u064A\u0660-\u0669\u4E00-\u9FFF\u0E00-\u0E7F«»฿ฯ๏๚๛\u0400-\u04FF\u0500-\u052F\u2DE0-\u2DFF\uA640-\uA69FЮ́ю́Я́я́\u0370-\u03FF\u1F00-\u1FFFA-Za-zÀ-ÖØ-öø-ÿĀ-ž0-9._\--ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوي ًٌٍَُِّْٰﷲﷴﷺﷻ ٠١٢٣٤٥٦٧٨٩ \s]+$", # noqa: E501
364+
argument,
365+
):
363366
raise argparse.ArgumentTypeError(
364367
"The option can only contain a-z letters, numbers, periods, dash or underscore"
365368
)
@@ -663,7 +666,7 @@ def get_replacement_value_from_dict(el_text: str, replacement_values: List[Tuple
663666
if el_new:
664667
return el_new
665668
if k.strip() in el_text:
666-
reg = r"(?<!\S)" + re.escape(k.strip()) + "(?!\S)" # # noqa: W605
669+
reg = r"(?<!\S)" + re.escape(k.strip()) + "(?!\S)" # noqa: W605
667670
el_text = re.sub(reg, v, el_text)
668671
return el_text
669672

source/webapp-cards-2.00-ru.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ suits:
6666
desc: "Хавьер может внедрить данные в интерпретатор на стороне клиента или устройства, поскольку параметризованный интерфейс не используется или не был реализован правильно, или данные не были правильно закодированы для контекста, или нет ограничений в отношении включений кода или данных"
6767
-
6868
id: "VEK"
69-
value: "К"
69+
value: "K"
7070
url: "https://cornucopia.owasp.org/cards/VEK"
7171
desc: "Гейб может внедрить данные в интерпретатор на стороне сервера (например, SQL, команды ОС, XPath, серверный JavaScript, SMTP), потому что строго типизированный параметризованный интерфейс не используется или реализован неправильно"
7272
-
@@ -433,14 +433,16 @@ suits:
433433
id: "JOA"
434434
value: "A"
435435
url: "https://cornucopia.owasp.org/cards/JOA"
436-
card: "Джокер"
436+
#card: "Джокер"
437+
card: "Joker"
437438
desc: "Алиса может использовать приложение для атаки на пользовательские системы и данные"
438439
misc: "Вы размышляли над тем, чтобы стать индивидуальным членом OWASP? Все инструменты, руководство и встречи бесплатны для всех, но индивидуальное членство помогает поддержать работу OWASP"
439440
-
440441
id: "JOB"
441442
value: "B"
442443
url: "https://cornucopia.owasp.org/cards/JOB"
443-
card: "Джокер"
444+
#card: "Джокер"
445+
card: "Joker"
444446
desc: "Боб может изменить или повлиять на приложение так, что оно перестанет соответствовать юридическим, нормативным, договорным или другим организационным предписаниям"
445447
misc: "Изучите уязвимости и обнаружьте, как их можно исправить, используя бесплатный Juice Shop, Security Shepherd или бесплатные задания Hacking-lab от OWASP®"
446448
paragraphs:

tests/scripts/convert_utest.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,50 @@
2020
__import__("sys").modules["unittest.util"]._MAX_LENGTH = 999999999
2121

2222

23+
class MultiLingualSupportIsValidStringArgument(unittest.TestCase):
24+
def test_is_valid_string_argument(self) -> None:
25+
# Devanagari
26+
self.assertTrue(
27+
c.is_valid_string_argument("अआइईउऊऋॠऌॡएऐओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलवशषसहक्षत्रज्ञश्रािीुूृॄॢॣेैोौँंःऽॐ।॥०१२३४५६७८९") # noqa: E501
28+
)
29+
# Common Chinese characters
30+
self.assertTrue(
31+
c.is_valid_string_argument(
32+
"的一是不了人我在有他这中大来上国个到说们时用生地为子就出也得可下对生会能而年好小工不天你都和那要她看去很学只多家以新长从自实过发成当动经如事方作成者部里用行道然种面因进此" # noqa: E501
33+
)
34+
)
35+
# Hiragana, Katakana, Kanji
36+
self.assertTrue(
37+
c.is_valid_string_argument(
38+
"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゃゅょっアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポャュョッ一二三四五六七八九十日月火水木金土山川田人名本学生校先生私年時今行来見書話聞食飲車駅国外大中小新古高安円白赤青黒" # noqa: E501
39+
)
40+
)
41+
# Cyrilic
42+
self.assertTrue(
43+
c.is_valid_string_argument(
44+
"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюяӘәӨөҮүҰұҚқҒғҢңҺһІіЇїЄєҐґЁёЂђЃѓЄєЅѕІіЇїЈјЉљЊњЋћЌќЎўЏџА́а́Е́е́И́и́О́о́У́у́Ы́ы́Э́э́Ю́ю́Я́я́" # noqa: E501
45+
)
46+
)
47+
# Thai
48+
self.assertTrue(
49+
c.is_valid_string_argument("กขคฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรลวศษสหฬอฮะัาำิีึืุูเะแโใไๆ็่้๊๋์๐๑๒๓๔๕๖๗๘๙«»฿ๆฯ๏๚๛") # noqa: E501
50+
)
51+
# Greek
52+
self.assertTrue(
53+
c.is_valid_string_argument(
54+
"ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωΆΈΉΊΌΎΏΐΪΫάέήίόύώϋΰϐϑϒϓϔϕϖϚϛϜϝϞϟϠϡ" # noqa: E501
55+
)
56+
)
57+
# Arabic
58+
self.assertTrue(c.is_valid_string_argument("ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوي ًٌٍَُِّْٰﷲﷴﷺﷻ ٠١٢٣٤٥٦٧٨٩ "))
59+
# European
60+
self.assertTrue(
61+
c.is_valid_string_argument(
62+
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıĴĵĶķĹĺĻļĽľŁłŃńŅņŇňŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽž" # noqa: E501
63+
)
64+
)
65+
66+
2367
class TextGetValidEditionChoices(unittest.TestCase):
2468
def test_get_valid_edition_choices(self) -> None:
2569
c.convert_vars.args = argparse.Namespace(edition="all")

0 commit comments

Comments
 (0)