Предположим, что у меня есть SQL-запрос, который похож на это:
SELECT fName from employees where ssn=123456789;
Предположим, что я хочу следовать за предыдущим запросом с другим:
SELECT fName from records WHERE ssn=123456789;
SELECT lName from records WHERE fName=(the result of the previous query)
Для чего я вставляю (the result of the previous query)
сделать этот возврат фамилиями из записей, где fName соответствует, по-видимому, уникальной записи где ssn=123456789?
Я знаю, что это - нереалистичный пример, но что я спрашиваю, "Как я обращаюсь к результату своего предыдущего запроса?"
BTW, если это имеет какое-либо значение, я использую SQL Server MS 2008.Спасибо!
Вы можете сохранить результат первого запроса в переменной и использовать эту переменную во втором запросе.
DECLARE @firstName VARCHAR(255)
SELECT @firstName = fName from employees where ssn=123456789
SELECT lName from records WHERE fName=@firstName
SELECT lName from records WHERE fName =(SELECT fName from employees where ssn=123456789)
ИЛИ
SELECT lName from records r
INNER JOIN employees e ON (e.fName = r.fName)
WHERE e.ssn = 123456789
ИЛИ Вы также можете использовать CTE.
Я в конечном итоге добавил ulimit -s BLA
к командам, которые в этом нуждались. Я специально не хотел идти с BSD:: Resource, потому что это не пакет Perl по умолчанию и отсутствовал примерно на половине существующих машин для разработки. Взаимодействие с пользователем не является определенным требованием.
Проблемы атак XSS в большей степени связаны с рыболовством. Проблема в том, что сайт, которому доверяет клиент, может быть введен с кодом, который приводит к сайту, созданному злоумышленником для определенных целей. Например, кража конфиденциальной информации.
Итак, при атаках XSS вторгшиеся не попадают в вашу базу данных и не связываются с ней. Он играет с чувством в клиенте, что этот сайт безопасен и каждая ссылка на нем указывает на безопасное место.
Это всего лишь первый шаг реальной атаки - привести клиента во враждебное окружение.
Я могу привести вам краткий пример. Если банковское учреждение кладет на свою страницу, например, чек-бокс, и они не мешают мне атаковать XSS, я могу кричать «Эй, приходи по этой ссылке и вводи тебе пароли и кредитную карту Нет для проверки безопасности!»... И вы знаете, к чему приведет эта ссылка, верно?
Вы можете предотвратить атаки XSS, убедившись, что вы ничего не отображаете на своей странице, что исходит от ввода пользователей, не избегая html-тегов. Специальные символы должны быть удалены, чтобы они не мешали разметке html-страниц (или какой-либо технологии вы используете). Существует множество библиотек, обеспечивающих эту возможность, включая библиотеку Microsoft AntiXSS.
-121--2240760-Существует три очевидных способа сделать это. Можно использовать переменные SQL, временные таблицы (или переменные таблицы, они примерно эквивалентны) или вложенный запрос.
SQL Variables
Здесь вы сохраняете желаемое значение в переменной (фрагмент кода @ fname ниже), а затем можете использовать его позже. При таком подходе вы хотите быть осторожными, чтобы ваш SSN действительно был уникальным идентификатором.
Declare @fname Varchar(50)
Select @fname = fname
from employees
Where ssn = 123456789
Select lName from records
where fname = @fname
Временная таблица
С помощью временной таблицы создается требуемая таблица записей. Затем это можно использовать позже, и для получения нужных записей используется временная таблица в подзапросе.
Можно либо объявить временную таблицу как отдельную инструкцию create table
, либо объявить ее как часть выбора, как я делаю это ниже.
Select fname into #temptable
From employees
Where ssn = 123456789
Select lName from records
where fname in
(
Select fname
from #temptable
)
Sub Query
Это на самом деле очень похоже на подход временной таблицы, но вы вставляете часть временной таблицы, поэтому вы не можете сослаться на нее позже.
Select @fname = fname
from employees
Where ssn = 123456789
Select lName from records
where fname in
(
Select fname
from employees
Where ssn = 123456789
)