1
0
mirror of https://github.com/alm494/sql_proxy.git synced 2026-04-22 19:33:55 +02:00

some fixes

This commit is contained in:
Almaz Sharipov
2025-10-06 08:09:11 +03:00
parent 56f56f76e2
commit b6ecff15c7
3 changed files with 13 additions and 5 deletions
+2 -2
View File
@@ -36,8 +36,8 @@ Note that this service is not limited to 1C and can be utilized in other context
* Prepared Statements : supported;
* BLOB read/write : supported;
* Flexible Binding : Can bind to localhost or any specified IP address for enhanced security. By default, it is intended to bind to localhost and run alongside legacy software;
* Security Responsibility : Does not perform SQL query validation and any other security checks. It is the responsibility of DBA to configure appropriate database privileges. Keep in mind ADODB is the old-school engineering and this tool is the simple replacement. All security-related work must be completed first at
SQL server — as it always was, long before the era of shiny new toys;
* Security Responsibility : Does not perform SQL query validation and any other security checks. It is the responsibility of DBA to configure appropriate database privileges. Keep in mind ADODB is the old-school engineering and this tool is the simple and quick replacement. All security-related work must be completed
first at SQL server — as it always was, long before the era of shiny new toys. Consider to implement ORM model in the future or another secure-driven patterns;
* Monitoring and Metrics : Provides Prometheus metrics for performance monitoring and observability;
## API description
+2 -1
View File
@@ -41,7 +41,8 @@
+ Поддержка подготовленных выражений: реализована;
+ Поддержка записи и чтения BLOB полей: реализована;
+ Гибкая привязка: может быть привязан к localhost или любому указанному IP-адресу для повышения безопасности. По умолчанию предполагается привязка к localhost и работа в паре с устаревшим программным обеспечением;
+ Ответственность за безопасность: не выполняет валидацию SQL-запросов. Ответственность за настройку соответствующих привилегий базы данных лежит на администраторе СУБД. Помните, что это простая прямая замена вызовов ADODB, который является "дедовской" технологией, и раз вы заинтересованы заменить его, то у вас уже должны быть настроены роли и пользователи на СУБД, в противовес тому что принято сейчас в смузи-технологиях. Не используйте учётную запись с административными привилегиями!
+ Ответственность за безопасность: не выполняет валидацию SQL-запросов. Ответственность за настройку соответствующих привилегий базы данных лежит на администраторе СУБД. Помните, что это простая и быстрая замена вызовов ADODB, который является "дедовской" технологией, и раз вы заинтересованы заменить его, то у вас уже должны быть настроены роли и пользователи на СУБД, в противовес тому что принято сейчас в смузи-технологиях. Не используйте учётную запись с административными привилегиями! Рассмотрите на будущее
разработку ORM или других более безопасных паттернов разработки.
+ Мониторинг и метрики: предоставляет метрики Prometheus;
## Описание API
+9 -2
View File
@@ -7,6 +7,8 @@ import (
"sql-proxy/src/db"
)
const maxBlobSize int64 = 32 << 20 // 32 MB, change here if required
func ReadBlob(w http.ResponseWriter, r *http.Request) {
if ok := checkApiVersion(w, r); !ok {
@@ -31,6 +33,11 @@ func ReadBlob(w http.ResponseWriter, r *http.Request) {
return
}
if int64(len(data)) > maxBlobSize {
errorResponce(w, "Data too large", http.StatusRequestEntityTooLarge)
return
}
w.Header().Set("Content-Type", "application/octet-stream")
w.Write(data)
@@ -42,8 +49,8 @@ func WriteBlob(w http.ResponseWriter, r *http.Request) {
return
}
maxSize := int64(32 << 20) // 32 MB, change here if required
connId, sqlQuery, data, ok := parseQueryHttpHeadersAndMultipartBody(r, maxSize)
//maxSize := int64(32 << 20) // 32 MB, change here if required
connId, sqlQuery, data, ok := parseQueryHttpHeadersAndMultipartBody(r, maxBlobSize)
if !ok {
errorResponce(w, "Bad request", http.StatusBadRequest)
return