Abiks järgnev päring
SELECT dm_exec_sessions.session_id, dm_exec_sessions.status
, dm_exec_sessions.login_name, dm_exec_sessions.original_login_name
, dm_exec_connections.net_transport
, dm_exec_connections.connect_time
, dm_exec_sessions.login_time
, dm_exec_connections.protocol_type
, dm_exec_connections.client_net_address
, dm_exec_connections.client_tcp_port
, dm_exec_connections.auth_scheme
, dm_exec_sessions.HOST_NAME, dm_exec_sessions.NT_DOMAIN
, dm_exec_sessions.program_name, dm_exec_sessions.client_interface_name
, dm_exec_sessions.language, dm_exec_sessions.client_version
, dm_exec_requests.command, dm_exec_requests.wait_type, dm_exec_requests.wait_time, dm_exec_requests.wait_resource
FROM sys.dm_exec_sessions
JOIN sys.dm_exec_connections ON (dm_exec_sessions.session_id = dm_exec_connections.session_id )
INNER JOIN master..sysprocesses ON (dm_exec_sessions.session_id = sysprocesses.SPID)
LEFT JOIN sys.dm_exec_requests ON (dm_exec_sessions.session_id = dm_exec_requests.session_id)
WHERE DB_NAME(sysprocesses.dbid) = DB_NAME()
--AND dm_exec_sessions.status != 'sleeping'
dm_exec_sessions.session_id põhjal võib teha KILL sellele ühendusele
dm_exec_sessions.program_name saad seada Web.Config faili ConnectionStringis Application Name parameetriga niimoodi
connectionString="Data Source=SQL2008SERVER;Min Pool Size=2;Application Name=MINURAKENDUS; ...
kolmapäev, 30. detsember 2009
reede, 18. detsember 2009
GridView TemplateField veeru päise muutmine nii, et sortimine jääks alles
TemplateFieldil võib päise ja sorteerimise kirjeldada nii
Kui vaja nüüd veeru päise teksti dünaamiliselt muuta nii, et sorteerimise võimalus alles jääks
siis tee eraldi HeaderTemplate, kuhu poeta Linkbutton, mille CommandName on "Sort" ja CommandArgument on see andmebaasi väli mille järgi sorteerida tahad
Kui nüüd vaja päise teksti muuta, saad teha nii kusjuures sortimine jääb alles
protected void GridViewKolijad_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
LinkButton ud = (LinkButton)e.Row.FindControl("LinkButtonVana");
if (ud != null)
{
ud.Text = this.RadioButtonListSisse.SelectedValue == "0" ? Resources.Resource.NewContract : Resources.Resource.PreviousContract;
}
}
}
Kui vaja nüüd veeru päise teksti dünaamiliselt muuta nii, et sorteerimise võimalus alles jääks
siis tee eraldi HeaderTemplate, kuhu poeta Linkbutton, mille CommandName on "Sort" ja CommandArgument on see andmebaasi väli mille järgi sorteerida tahad
Kui nüüd vaja päise teksti muuta, saad teha nii kusjuures sortimine jääb alles
protected void GridViewKolijad_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
LinkButton ud = (LinkButton)e.Row.FindControl("LinkButtonVana");
if (ud != null)
{
ud.Text = this.RadioButtonListSisse.SelectedValue == "0" ? Resources.Resource.NewContract : Resources.Resource.PreviousContract;
}
}
}
reede, 4. detsember 2009
II astme SQL süstimise tõkestamine reapiiranguga
Üks viis kuidas tõkestada SCRIPT, IFRAME, FORM, BODY ja muude murdskriptimisvõimaluste lisamist andmebaasi on panna string tüüpi väljade peale reapiirangud näiteks LIKE operandi kasutades
ALTER TABLE [dbo].[HD_PROBLEMS] WITH CHECK ADD CONSTRAINT [CK_HD_PROBLEMS_SQL_INJECTION] CHECK ((NOT [problemDescription] LIKE '%<_%')) Siin LIKE '%<_%' tähendab kõik stringid kus < järel on mingi character sümbol (ka tühik)
ALTER TABLE [dbo].[HD_PROBLEMS] WITH CHECK ADD CONSTRAINT [CK_HD_PROBLEMS_SQL_INJECTION] CHECK ((NOT [problemDescription] LIKE '%<[A-Z]%'))
Siin LIKE '%<[A-Z]%' kõik stringid kus < järel on mingi täht A kuni Z
ALTER TABLE [dbo].[HD_PROBLEMS] WITH CHECK ADD CONSTRAINT [CK_HD_PROBLEMS_SQL_INJECTION] CHECK ((NOT [problemDescription] LIKE '%<[ASIDBMFH/]%'))
Siin LIKE '%<[ASIDBMFH/]%' tähendab kõik stringid kus < järel on mingi sümbol nimekirjast ASIDBMFH/
Koos NOT-iga saame lausendi mis kontrollib "ei ole mustas nimekirjas".
Standardid soovitavad muidugi kasutada valge nimekirja kontrollimist.
Kuidas töötab
Kui nüüd üritatakse XSS-i kirjutada andmebaasi välja sisse (II astme rünnak)
siis reapiirang asub tegevusse ja andmeid muuta ei lubata
ALTER TABLE [dbo].[HD_PROBLEMS] WITH CHECK ADD CONSTRAINT [CK_HD_PROBLEMS_SQL_INJECTION] CHECK ((NOT [problemDescription] LIKE '%<_%')) Siin LIKE '%<_%' tähendab kõik stringid kus < järel on mingi character sümbol (ka tühik)
ALTER TABLE [dbo].[HD_PROBLEMS] WITH CHECK ADD CONSTRAINT [CK_HD_PROBLEMS_SQL_INJECTION] CHECK ((NOT [problemDescription] LIKE '%<[A-Z]%'))
Siin LIKE '%<[A-Z]%' kõik stringid kus < järel on mingi täht A kuni Z
ALTER TABLE [dbo].[HD_PROBLEMS] WITH CHECK ADD CONSTRAINT [CK_HD_PROBLEMS_SQL_INJECTION] CHECK ((NOT [problemDescription] LIKE '%<[ASIDBMFH/]%'))
Siin LIKE '%<[ASIDBMFH/]%' tähendab kõik stringid kus < järel on mingi sümbol nimekirjast ASIDBMFH/
Koos NOT-iga saame lausendi mis kontrollib "ei ole mustas nimekirjas".
Standardid soovitavad muidugi kasutada valge nimekirja kontrollimist.
Kuidas töötab
Kui nüüd üritatakse XSS-i kirjutada andmebaasi välja sisse (II astme rünnak)
siis reapiirang asub tegevusse ja andmeid muuta ei lubata
Tellimine:
Postitused (Atom)