Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите как скрыть часть телефона, заменив на "*"  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 670
Добрый день.

Есть таблица клиентов, при получении набора данных (SELECT) необходимо скрыть часть телефона. Оставив "открытыми" первый и 4 последних цифры.

Например, телефон 9221234567 необходимо преобразовать в 9*****4567.

Подскажите, какое решение будет самым быстрым и правильным при выполнении запроса?
6 июл 17, 07:27    [20617630]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как скрыть часть телефона, заменив на "*"  [new]
Massa52
Member

Откуда:
Сообщений: 379
DECLARE @tel VARCHAR(20) = '9221234567'
SELECT LEFT(@tel,1) + '*****' + RIGHT(@tel,4) 
6 июл 17, 07:56    [20617664]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как скрыть часть телефона, заменив на "*"  [new]
Serп
Member

Откуда:
Сообщений: 17
Игорь_UUS,
select stuff('9221234567',2,5,'*****')
6 июл 17, 09:24    [20617788]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как скрыть часть телефона, заменив на "*"  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Игорь_UUS
Есть таблица клиентов, при получении набора данных (SELECT) необходимо скрыть часть телефона
вам нужно скрывать от того кто селект выполняет или от того кому потом результаты показывают?
6 июл 17, 09:44    [20617848]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как скрыть часть телефона, заменив на "*"  [new]
0wl
Member

Откуда:
Сообщений: 54
В 16 сиквеле появился Dynamic Data Masking: один раз настроил и потом для выбранных пользователей во всех селектах данные скрыты

https://docs.microsoft.com/en-US/sql/relational-databases/security/dynamic-data-masking
6 июл 17, 11:06    [20618147]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите как скрыть часть телефона, заменив на "*"  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
0wl,

Фуфло этот Data Masking. Работает только если у пользователей нет напрямую доступа к SQL. Мы даже на тренинге у MS спеца спросили
- а что если age скрыто, но юзер напишет:
SELECT * WHERE age = 1
SELECT * WHERE age = 2
SELECT * WHERE age = 3
...
SELECT * WHERE age = 100

- Он не узнает возраст?
- Ну, вообще-то узнает.
- ???

Ну об этом по ссылке собственно и написано.
автор
Security Note: Bypassing masking using inference or brute-force techniques
Dynamic Data Masking is designed to simplify application development by limiting data exposure in a set of pre-defined queries used by the application. While Dynamic Data Masking can also be useful to prevent accidental exposure of sensitive data when accessing a production database directly, it is important to note that unprivileged users with ad-hoc query permissions can apply techniques to gain access to the actual data. If there is a need to grant such ad-hoc access, Auditing should be used to monitor all database activity and mitigate this scenario.
As an example, consider a database principal that has sufficient privileges to run ad-hoc queries on the database, and tries to 'guess' the underlying data and ultimately infer the actual values. Assume that we have a mask defined on the [Employee].[Salary] column, and this user connects directly to the database and starts guessing values, eventually inferring the [Salary] value of a set of Employees:
11 июл 17, 23:37    [20635253]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить