Вы можете использовать ROW_NUMBER
:
WITH cte AS (
SELECT *,ROW_NUMBER() OVER(PARTITION BY LName,Fname,DateOfBirth,StreetAddress
ORDER BY ID DESC) rn
FROM #Dataset
)
SELECT *
FROM cte
WHERE rn > 1
ORDER BY ID;
РЕДАКТИРОВАТЬ:
WITH cte AS (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY LName, Fname, DateOfBirth, StreetAddress
ORDER BY ID DESC) rn,
SUM(CASE WHEN Source = 'Company XYZ' THEN 1 ELSE 0 END)
OVER(PARTITION BY LName, Fname, DateOfBirth, StreetAddress) AS cnt
FROM #Dataset
)
SELECT *
FROM cte
WHERE rn > 1
AND cnt > 0
AND [Source] IS NULL
ORDER BY ID;
РЕДАКТИРОВАТЬ 2 :
WITH cte AS (
SELECT *,
SUM(CASE WHEN Source IS NULL THEN 1 ELSE 0 END) OVER(PARTITION BY LName, Fname, DateOfBirth, StreetAddress) c1,
SUM(CASE WHEN Source = 'Company XYZ' THEN 1 ELSE 0 END) OVER(PARTITION BY LName, Fname, DateOfBirth, StreetAddress) AS c2,
COUNT(*) OVER(PARTITION BY LName, Fname, DateOfBirth, StreetAddress) c3
FROM #Dataset
)
SELECT *
FROM cte
WHERE c1 > 0
AND c2 > 0
AND c3 > 1
AND Source IS NULL
ORDER BY ID;
Во-первых, как некоторые другие упомянули, XSS может позволить другие полезные нагрузки, не только кражу cookie.
Но, должен там так или иначе украсть httpOnly cookie, с XSS? (игнорирование вопроса поддержки httpOnly?).... Ответ: Да.
Подмножество XSS известно как перекрестный Сайт, Прослеживающий (XST) (или перейдите к исходной научно-исследовательской работе). Это нападение имеет полезную нагрузку XSS, отправляют запрос ТРАССИРОВКИ HTTP к веб-серверу (или прокси, передайте ИЛИ инвертируйте), который отреагирует клиенту на полный запрос - ВКЛЮЧАЯ ВАШИ COOKIE, httpOnly или нет. Полезная нагрузка XSS может затем проанализировать возвращенную информацию и получить те восхитительные cookie...
Btw, еще одно "подмножество" (своего рода) из XSS, включает полезную нагрузку введения в заголовки ответа. Хотя подобный, это не точно XSS, и Инжекция Заголовка может даже привести к Разделению ответа HTTP (HRS) - который намного более мощен, позволяет близкий полный контроль над другими клиентами, отравление кэшем и конечно доступ к cookie, раз так желали.
Если браузер не понимает HttpOnly, нападение успешно выполняется.Править: хорошо, Вы не заинтересованы. Это прекрасно, но я оставлю это уведомление только для ссылки. Полезно указать это явно.
Другим способом украсть помимо сниффинга сети было бы прямое управление компьютера пользователя. Затем cookie могут быть считаны из файла. Если это будут сеансовые куки, то это будет, конечно, удалено после того, как браузер закрывается.
Между прочим, кража сеансовых куки не является единственной возможной "полезной нагрузкой" нападения XSS. Например, это может сделать Вашу защиту CSRF бесполезной. Это может изменить содержание Вашего сайта для обмана пользователя. И много других злонамеренных вещей.
Настолько лучше защитите себя хорошим способом (вывод Escape) и думайте о HttpOnly как дополнительный слой защиты.
Используя HttpOnly cookie будут препятствовать тому, чтобы нападения на XSS получили те cookie.
Если:
Поскольку другой плакат отметил: XSS не является единственной угрозой там, и cookie захвата не являются единственной угрозой со стороны XSS. Я уверен, что Вы знали это - я просто завершен!
Удачи!
Пакетный сниффинг может считать cookie, переданные по http. Но это не может подпасть под XSS.
JavaScript может изменять HTML на странице, поэтому httpOnly не не означает, что вы защищены от XSS.