web-datafilter 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 qwertyvs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,299 @@
1
+ Metadata-Version: 2.4
2
+ Name: web-datafilter
3
+ Version: 0.1.0
4
+ Summary: Security-oriented Python library for detecting SQLi, SSTI and XSS payloads
5
+ Author-email: qwertyvs <NuhUh@gmail.com>
6
+ License: MIT
7
+ Keywords: security,sqli,xss,ssti,input-validation
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Operating System :: OS Independent
10
+ Requires-Python: >=3.8
11
+ Description-Content-Type: text/markdown
12
+ License-File: LICENCE
13
+ Requires-Dist: regex
14
+ Dynamic: license-file
15
+
16
+ # DataFilter - документация
17
+
18
+ **Автор:** qwertyvs<br>**Репозиторий:** https://github.com/qwertyvs/DataFilter
19
+
20
+ ## Оглавление
21
+
22
+ * [Кратко о проекте](#Кратко-о-проекте)
23
+ * [Установка](#установка)
24
+ * [Ожидаемое поведение](#ожидаемое-поведение)
25
+
26
+ * [Обычный пользователь](#обычный-пользователь)
27
+ * [Нарушитель (злоумышленник)](#нарушитель-злоумышленник)
28
+ * [Значения статусов](#значения-статусов)
29
+ * [Глобальные параметры](#глобальные-параметры)
30
+ * [Классы](#классы)
31
+
32
+ * [DataFilterException](#datafilterexception)
33
+ * [filterReport](#filterreport)
34
+ * [Функции](#функции)
35
+
36
+ * [strSQLICheck()](#strsqlicheck)
37
+ * [strSSTICheck()](#strssticheck)
38
+ * [strXSSCheck()](#strxsscheck)
39
+ * [strMultCheck()](#strmultcheck)
40
+ * [Пример использования](#пример-использования)
41
+ * [Обратная связь](#обратная-связь)
42
+
43
+ # Кратко о проекте
44
+
45
+ **DataFilter** - это лёгкая библиотека на Python, предназначенная для
46
+ анализа входных данных и обнаружения возможных попыток эксплуатации
47
+ распространённых веб‑уязвимостей.
48
+
49
+ Библиотека умеет обнаруживать признаки:
50
+
51
+ - SQL Injection (SQLi)
52
+ - Server-Side Template Injection (SSTI)
53
+ - Cross-Site Scripting (XSS)
54
+
55
+ DataFilter выполняет **статический анализ строк** и ищет сигнатуры,
56
+ характерные для вредоносных полезных нагрузок.
57
+
58
+ ------------------------------------------------------------------------
59
+
60
+ # Установка
61
+
62
+ 1. Установите библиотеку:
63
+
64
+ ``` bash
65
+ pip install DataFilter
66
+ ```
67
+
68
+ 2. Импортируйте нужные функции:
69
+
70
+ ``` python
71
+ from datafilter import strSQLICheck, strSSTICheck, strXSSCheck, strMultCheck
72
+ ```
73
+
74
+ ------------------------------------------------------------------------
75
+
76
+ # Ожидаемое поведение
77
+
78
+ ## Обычный пользователь
79
+
80
+ Обычный пользователь отправляет обычные значения:
81
+
82
+ - имена пользователей
83
+ - email
84
+ - короткие текстовые поля
85
+
86
+ В этом случае библиотека должна вернуть:
87
+
88
+ status = OK
89
+ issecure = True
90
+
91
+ ## Нарушитель (злоумышленник)
92
+
93
+ Злоумышленник может отправлять вредоносные полезные нагрузки, например:
94
+
95
+ 1' OR 1=1 --
96
+ <script>alert(1)</script>
97
+ {{7*7}}
98
+
99
+ В таких случаях библиотека должна вернуть:
100
+
101
+ status = FOUND
102
+ или
103
+ status = DETECTED
104
+
105
+ ### Значения статусов
106
+
107
+ Статус: Значение
108
+
109
+ OK: Подозрительных паттернов не обнаружено<br>
110
+ FOUND*: Обнаружены подозрительные признаки<br>
111
+ DETECTED: Высокая вероятность вредоносной нагрузки
112
+
113
+ \* **В strSQLICheck означает, что найдено ключевое слово sql, в контексте проверки осмысленного текста на английском языке является защитой от ложных срабатываний**
114
+
115
+ ------------------------------------------------------------------------
116
+
117
+ # Глобальные параметры
118
+
119
+ В библиотеке есть три глобальных параметра, отвечающих за защиту от
120
+ слишком долгого выполнения регулярных выражений.
121
+
122
+ sqli_patern_time = 0.1
123
+ ssti_patern_time = 0.1
124
+ xss_patern_time = 0.2
125
+
126
+ Эти значения задают **максимальное время выполнения одного
127
+ regex‑паттерна в секундах**.
128
+
129
+ Если выполнение превышает тайм‑аут, библиотека помечает это как:
130
+
131
+ dos_payload
132
+
133
+ Это может указывать на попытку **ReDoS‑атаки** (нагрузки через сложные
134
+ регулярные выражения).
135
+
136
+ Если процессор досточно мощный можно уменьшить, переопределив в программе
137
+
138
+ ------------------------------------------------------------------------
139
+
140
+ # Классы
141
+
142
+ ## DataFilterException
143
+
144
+ Внутреннее исключение библиотеки.
145
+
146
+ Возникает если:
147
+
148
+ - переданы неверные типы данных
149
+ - произошла внутренняя ошибка
150
+
151
+ Пример сообщения:
152
+
153
+ INVALID_INPUT: expected str
154
+
155
+ ------------------------------------------------------------------------
156
+
157
+ ## filterReport
158
+
159
+ Структура отчёта, возвращаемая всеми функциями проверки.
160
+
161
+ Поля:
162
+
163
+ Поле: Описание
164
+
165
+ data: исходная проверенная строка<br>
166
+ type: тип проверки (SQLI / SSTI / XSS)<br>
167
+ status: итоговый статус<br>
168
+ detections: список сработавших сигнатур<br>
169
+ issecure: True если строка считается безопасной<br>
170
+ processtime: время выполнения проверки в наносекундах
171
+
172
+ ------------------------------------------------------------------------
173
+
174
+ # Функции
175
+
176
+ ## strSQLICheck()
177
+
178
+ Проверяет строку на признаки SQL Injection.
179
+
180
+ Параметры:
181
+
182
+ data : str
183
+ allowedSymbols : str
184
+
185
+ Если параметр `allowedSymbols` задан и строка содержит символ вне этого
186
+ набора, функция сразу возвращает:
187
+
188
+ status = DETECTED
189
+ detections = ["banned_symbol_usage"]
190
+
191
+ Функция ищет такие признаки SQL‑инъекций как:
192
+
193
+ - UNION SELECT
194
+ - SQL комментарии
195
+ - логические таутологии
196
+ - time‑based атаки
197
+ - ключевые SQL слова
198
+
199
+ Возвращает объект `filterReport`.
200
+
201
+ ------------------------------------------------------------------------
202
+
203
+ ## strSSTICheck()
204
+
205
+ Проверяет строку на Server-Side Template Injection.
206
+
207
+ Обнаруживает конструкции, используемые в шаблонизаторах.
208
+
209
+ Примеры:
210
+
211
+ {{ ... }}
212
+ {% ... %}
213
+ ${ ... }
214
+ #{ ... }
215
+
216
+ Также ищет опасные вызовы:
217
+
218
+ eval()
219
+ exec()
220
+ os.popen()
221
+ Runtime.getRuntime()
222
+
223
+ Возвращает `filterReport`.
224
+
225
+ ------------------------------------------------------------------------
226
+
227
+ ## strXSSCheck()
228
+
229
+ Проверяет строку на признаки Cross-Site Scripting.
230
+
231
+ Перед анализом строка проходит нормализацию:
232
+
233
+ 1. URL‑декодирование
234
+ 2. декодирование HTML‑сущностей
235
+ 3. удаление управляющих символов
236
+ 4. нормализация Unicode
237
+
238
+ После этого выполняется поиск таких паттернов как:
239
+
240
+ - `<script>`
241
+ - протокол `javascript:`
242
+ - обработчики событий `onload=`
243
+ - `<iframe>`
244
+ - теги `svg` или `math`
245
+
246
+ Возвращает `filterReport`.
247
+
248
+ ------------------------------------------------------------------------
249
+
250
+ ## strMultCheck()
251
+
252
+ Позволяет выполнить несколько проверок сразу.
253
+
254
+ Пример:
255
+
256
+ ``` python
257
+ strMultCheck(data, modes=["SQLI","SSTI","XSS"])
258
+ ```
259
+
260
+ Возвращает словарь:
261
+
262
+ {
263
+ "SQLI": filterReport,
264
+ "SSTI": filterReport,
265
+ "XSS": filterReport,
266
+ "total_status": str,
267
+ "total_issecure": bool,
268
+ "total_processtime": int
269
+ }
270
+
271
+ ------------------------------------------------------------------------
272
+
273
+ # Пример использования
274
+
275
+ ``` python
276
+ from DataFilter import strMultCheck
277
+
278
+ payload = "1' OR 1=1 --"
279
+
280
+ result = strMultCheck(payload)
281
+
282
+ print(result["SQLI"].status)
283
+ print(result["total_status"])
284
+ ```
285
+
286
+ ------------------------------------------------------------------------
287
+
288
+ # Обратная связь
289
+
290
+ ## Контакты
291
+
292
+ Пожалуйста помните, что ни одно решение не является идеальным, и
293
+ **DataFilter** - не исключение.
294
+
295
+ Если у вас есть вопросы или предложения, вы можете написать мне.\
296
+ Я постараюсь ответить как только появится возможность (обычно в течение
297
+ одного рабочего дня).
298
+
299
+ **Спасибо за использование DataFilter!**
@@ -0,0 +1,284 @@
1
+ # DataFilter - документация
2
+
3
+ **Автор:** qwertyvs<br>**Репозиторий:** https://github.com/qwertyvs/DataFilter
4
+
5
+ ## Оглавление
6
+
7
+ * [Кратко о проекте](#Кратко-о-проекте)
8
+ * [Установка](#установка)
9
+ * [Ожидаемое поведение](#ожидаемое-поведение)
10
+
11
+ * [Обычный пользователь](#обычный-пользователь)
12
+ * [Нарушитель (злоумышленник)](#нарушитель-злоумышленник)
13
+ * [Значения статусов](#значения-статусов)
14
+ * [Глобальные параметры](#глобальные-параметры)
15
+ * [Классы](#классы)
16
+
17
+ * [DataFilterException](#datafilterexception)
18
+ * [filterReport](#filterreport)
19
+ * [Функции](#функции)
20
+
21
+ * [strSQLICheck()](#strsqlicheck)
22
+ * [strSSTICheck()](#strssticheck)
23
+ * [strXSSCheck()](#strxsscheck)
24
+ * [strMultCheck()](#strmultcheck)
25
+ * [Пример использования](#пример-использования)
26
+ * [Обратная связь](#обратная-связь)
27
+
28
+ # Кратко о проекте
29
+
30
+ **DataFilter** - это лёгкая библиотека на Python, предназначенная для
31
+ анализа входных данных и обнаружения возможных попыток эксплуатации
32
+ распространённых веб‑уязвимостей.
33
+
34
+ Библиотека умеет обнаруживать признаки:
35
+
36
+ - SQL Injection (SQLi)
37
+ - Server-Side Template Injection (SSTI)
38
+ - Cross-Site Scripting (XSS)
39
+
40
+ DataFilter выполняет **статический анализ строк** и ищет сигнатуры,
41
+ характерные для вредоносных полезных нагрузок.
42
+
43
+ ------------------------------------------------------------------------
44
+
45
+ # Установка
46
+
47
+ 1. Установите библиотеку:
48
+
49
+ ``` bash
50
+ pip install DataFilter
51
+ ```
52
+
53
+ 2. Импортируйте нужные функции:
54
+
55
+ ``` python
56
+ from datafilter import strSQLICheck, strSSTICheck, strXSSCheck, strMultCheck
57
+ ```
58
+
59
+ ------------------------------------------------------------------------
60
+
61
+ # Ожидаемое поведение
62
+
63
+ ## Обычный пользователь
64
+
65
+ Обычный пользователь отправляет обычные значения:
66
+
67
+ - имена пользователей
68
+ - email
69
+ - короткие текстовые поля
70
+
71
+ В этом случае библиотека должна вернуть:
72
+
73
+ status = OK
74
+ issecure = True
75
+
76
+ ## Нарушитель (злоумышленник)
77
+
78
+ Злоумышленник может отправлять вредоносные полезные нагрузки, например:
79
+
80
+ 1' OR 1=1 --
81
+ <script>alert(1)</script>
82
+ {{7*7}}
83
+
84
+ В таких случаях библиотека должна вернуть:
85
+
86
+ status = FOUND
87
+ или
88
+ status = DETECTED
89
+
90
+ ### Значения статусов
91
+
92
+ Статус: Значение
93
+
94
+ OK: Подозрительных паттернов не обнаружено<br>
95
+ FOUND*: Обнаружены подозрительные признаки<br>
96
+ DETECTED: Высокая вероятность вредоносной нагрузки
97
+
98
+ \* **В strSQLICheck означает, что найдено ключевое слово sql, в контексте проверки осмысленного текста на английском языке является защитой от ложных срабатываний**
99
+
100
+ ------------------------------------------------------------------------
101
+
102
+ # Глобальные параметры
103
+
104
+ В библиотеке есть три глобальных параметра, отвечающих за защиту от
105
+ слишком долгого выполнения регулярных выражений.
106
+
107
+ sqli_patern_time = 0.1
108
+ ssti_patern_time = 0.1
109
+ xss_patern_time = 0.2
110
+
111
+ Эти значения задают **максимальное время выполнения одного
112
+ regex‑паттерна в секундах**.
113
+
114
+ Если выполнение превышает тайм‑аут, библиотека помечает это как:
115
+
116
+ dos_payload
117
+
118
+ Это может указывать на попытку **ReDoS‑атаки** (нагрузки через сложные
119
+ регулярные выражения).
120
+
121
+ Если процессор досточно мощный можно уменьшить, переопределив в программе
122
+
123
+ ------------------------------------------------------------------------
124
+
125
+ # Классы
126
+
127
+ ## DataFilterException
128
+
129
+ Внутреннее исключение библиотеки.
130
+
131
+ Возникает если:
132
+
133
+ - переданы неверные типы данных
134
+ - произошла внутренняя ошибка
135
+
136
+ Пример сообщения:
137
+
138
+ INVALID_INPUT: expected str
139
+
140
+ ------------------------------------------------------------------------
141
+
142
+ ## filterReport
143
+
144
+ Структура отчёта, возвращаемая всеми функциями проверки.
145
+
146
+ Поля:
147
+
148
+ Поле: Описание
149
+
150
+ data: исходная проверенная строка<br>
151
+ type: тип проверки (SQLI / SSTI / XSS)<br>
152
+ status: итоговый статус<br>
153
+ detections: список сработавших сигнатур<br>
154
+ issecure: True если строка считается безопасной<br>
155
+ processtime: время выполнения проверки в наносекундах
156
+
157
+ ------------------------------------------------------------------------
158
+
159
+ # Функции
160
+
161
+ ## strSQLICheck()
162
+
163
+ Проверяет строку на признаки SQL Injection.
164
+
165
+ Параметры:
166
+
167
+ data : str
168
+ allowedSymbols : str
169
+
170
+ Если параметр `allowedSymbols` задан и строка содержит символ вне этого
171
+ набора, функция сразу возвращает:
172
+
173
+ status = DETECTED
174
+ detections = ["banned_symbol_usage"]
175
+
176
+ Функция ищет такие признаки SQL‑инъекций как:
177
+
178
+ - UNION SELECT
179
+ - SQL комментарии
180
+ - логические таутологии
181
+ - time‑based атаки
182
+ - ключевые SQL слова
183
+
184
+ Возвращает объект `filterReport`.
185
+
186
+ ------------------------------------------------------------------------
187
+
188
+ ## strSSTICheck()
189
+
190
+ Проверяет строку на Server-Side Template Injection.
191
+
192
+ Обнаруживает конструкции, используемые в шаблонизаторах.
193
+
194
+ Примеры:
195
+
196
+ {{ ... }}
197
+ {% ... %}
198
+ ${ ... }
199
+ #{ ... }
200
+
201
+ Также ищет опасные вызовы:
202
+
203
+ eval()
204
+ exec()
205
+ os.popen()
206
+ Runtime.getRuntime()
207
+
208
+ Возвращает `filterReport`.
209
+
210
+ ------------------------------------------------------------------------
211
+
212
+ ## strXSSCheck()
213
+
214
+ Проверяет строку на признаки Cross-Site Scripting.
215
+
216
+ Перед анализом строка проходит нормализацию:
217
+
218
+ 1. URL‑декодирование
219
+ 2. декодирование HTML‑сущностей
220
+ 3. удаление управляющих символов
221
+ 4. нормализация Unicode
222
+
223
+ После этого выполняется поиск таких паттернов как:
224
+
225
+ - `<script>`
226
+ - протокол `javascript:`
227
+ - обработчики событий `onload=`
228
+ - `<iframe>`
229
+ - теги `svg` или `math`
230
+
231
+ Возвращает `filterReport`.
232
+
233
+ ------------------------------------------------------------------------
234
+
235
+ ## strMultCheck()
236
+
237
+ Позволяет выполнить несколько проверок сразу.
238
+
239
+ Пример:
240
+
241
+ ``` python
242
+ strMultCheck(data, modes=["SQLI","SSTI","XSS"])
243
+ ```
244
+
245
+ Возвращает словарь:
246
+
247
+ {
248
+ "SQLI": filterReport,
249
+ "SSTI": filterReport,
250
+ "XSS": filterReport,
251
+ "total_status": str,
252
+ "total_issecure": bool,
253
+ "total_processtime": int
254
+ }
255
+
256
+ ------------------------------------------------------------------------
257
+
258
+ # Пример использования
259
+
260
+ ``` python
261
+ from DataFilter import strMultCheck
262
+
263
+ payload = "1' OR 1=1 --"
264
+
265
+ result = strMultCheck(payload)
266
+
267
+ print(result["SQLI"].status)
268
+ print(result["total_status"])
269
+ ```
270
+
271
+ ------------------------------------------------------------------------
272
+
273
+ # Обратная связь
274
+
275
+ ## Контакты
276
+
277
+ Пожалуйста помните, что ни одно решение не является идеальным, и
278
+ **DataFilter** - не исключение.
279
+
280
+ Если у вас есть вопросы или предложения, вы можете написать мне.\
281
+ Я постараюсь ответить как только появится возможность (обычно в течение
282
+ одного рабочего дня).
283
+
284
+ **Спасибо за использование DataFilter!**
@@ -0,0 +1,30 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "web-datafilter"
7
+ version = "0.1.0"
8
+ description = "Security-oriented Python library for detecting SQLi, SSTI and XSS payloads"
9
+ readme = "README.md"
10
+ requires-python = ">=3.8"
11
+
12
+ authors = [
13
+ { name = "qwertyvs", email = "NuhUh@gmail.com" }
14
+ ]
15
+
16
+ license = { text = "MIT" }
17
+
18
+ dependencies = [
19
+ "regex"
20
+ ]
21
+
22
+ keywords = ["security", "sqli", "xss", "ssti", "input-validation"]
23
+
24
+ classifiers = [
25
+ "Programming Language :: Python :: 3",
26
+ "Operating System :: OS Independent"
27
+ ]
28
+
29
+ [tool.setuptools.packages.find]
30
+ where = ["src"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+