neljapäev, 26. märts 2009

ASP.NET ReportViewer Controli kasutamine koos IE8-ga

IE8 on väljas ja kui on ASP.NET-is kasutusel ReportViewer Contol siis tekib sinna ka printeri ikoon


kui nüüd tahta seda välja trükkida, võib ilmuda IE8 ActiveX paigaldamise hoiatusteade ja kui see paigaldamine ära teha ja siis uuesti trükkida proovida võib ilmuda veateade "Unable to load client print protocol".


Selle asja saab sisevõrgus korda IE8 sätete seadmisega:

Edasi


sätime veebilehe

lubatud sisevõrgu turvalisse tsooni

CustomValidator args.IsValid = false; ja ei mitte kui midagi muud

Et mitte korduvalt sama reha peale astuda siis puust ja punaselt, et kui kasutad veebilehe peal CustomValidatorit
siis tema ServerValidate eventis tuleb väära asja teada andmiseks kasutada args.IsValid = false;

    protected void CustomValidatorSolver_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (this.DropDownListTeostaja.SelectedValue == "-1")
        {
            this.CustomValidatorSolver.ErrorMessage = "Räige reeglite rikkumine";
            args.IsValid = false;
        }
    }

sellest ei ole kasu kui kasutad

this.CustomValidatorSolver.IsValid = false;
niipea kui tuled ServerValidate meetodist välja pöörab ASP.NET CustomValidatorSolver.IsValid tagasi true peale

P.S. Mõnikord on üldse kasulikum vähem programmeerida, kui mingi asi välja ei tule, mine töölt minema ja tule
järgmine päev tagasi. Võidad pool päeva asjatut närvitsemist.


Blogged with the Flock Browser

teisipäev, 24. märts 2009

Kasutaja andmebaasi rollide leidmine



Vaja teada, kas andmebaasi kasutaja on mingis andmebaasi rollis. Kätte saab alloleva funktsiooniga.

SELECT [dbo].[IS_WORKER_ROLE_KUIDO_S]('AKE', 'KAMPUS_WORKER')

Mida tähele panna on see, et SQL2005/2008 ei kobise midagi selle kohta, kui kasutajal pole õigusi süsteemsete tabelite teatud ridade lugemiseks. Libisetakse lihtsalt üle ja mingit infot ei pritsita.

Kui kasutajal ULLE-l pole andmebaasis DBO õigusi aga tahab teada, kas AKE on mingis rollis siis ULLE-na sees olles päring SELECT usu.name FROM sysusers usu jätab osad read "vahele". Lahenduseks siin impersoneerimise kasutamine, ehk teeb funktsiooni WITH EXECUTE AS 'DBO' suvandiga, et korrektesid tulemusi saada

ALTER FUNCTION [dbo].[IS_WORKER_ROLE_KUIDO_S](@kasutaja NVARCHAR(25), @roll NVARCHAR(25))
RETURNS INT
WITH EXECUTE AS 'DBO' --Et oleks ligipääsu õigus kõikidele tabeli ridadele
AS
BEGIN
DECLARE @out INT
IF EXISTS( SELECT usu.name FROM
sysusers usu WITH(NOLOCK) LEFT OUTER JOIN
(sysmembers mem WITH(NOLOCK) INNER JOIN sysusers usg WITH (NOLOCK) ON mem.groupuid = usg.uid) on usu.uid = mem.memberuid
LEFT OUTER JOIN master.dbo.syslogins lo WITH (NOLOCK) ON usu.sid = lo.sid
WHERE (usu.islogin = 1 AND usu.isaliased = 0 AND usu.hasdbaccess = 1) AND
(usg.issqlrole = 1 OR usg.uid is null) AND
usu.name = @kasutaja AND usg.name=@roll )
SET @out=1

RETURN ISNULL(@out,0)

END
Blogged with the Flock Browser

Andmetäite vältimise pealepeanemine Vista peal ehk DEP

Andmetäite vältimine ehk DEP on lühidalt lahti seletatud siin

http://windowshelp.microsoft.com/Windows/et-EE/help/186de3d0-01af-4d4c-981d-674637d2f4bf1061.mspx

ja sügavamalt siin
http://support.microsoft.com/kb/875352

Kuidas seda maha ja peale panna on kirjeldatud
http://windowshelp.microsoft.com/Windows/en-US/help/1d9bb9b4-f6ba-466d-ac2b-7b8c4f8361611033.mspx


Kui on eestikeelne Vista siis piltlikult käib pealepanek nii, et avad juhtpaneeli



sealt edasi valid Süsteem


klikid Täpsustatud süsteemisätted









ja sealt vaatab Täpsemalt Jõudluse sätteid

ja lülitame DEP-i sisse

DEP hea asi selleks, et viirused nii kergesti ligi ei pääseks.

















pühapäev, 22. märts 2009

ASP.NET CollapsiblePanelExtender

Kõigepealt tuleb ASPX lehe peal muuta DOCTYPE ära

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" >

Vaja selleks, et IE asjast aru saaks, muud(Flock, Safari, Opera, Firefox) töötavad ka
standardse
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
määranguga aga IE tahab XHTML-i (on siis tegu hullumeelsuse või geniaalsusega ?)

Extenderiga seotud asp:Panel-i kokkupaneminke käib "ClientState" sättimisega

this.PanelUusprobleem_CollapsiblePanelExtender.ClientState = "true";

paneb laiendusega seotud paneeli kokku


Blogged with the Flock Browser

kolmapäev, 18. märts 2009

Veebilehe validaatorite grupi seadmine

Vaja näiteks, et kõik usercontroli validaatorid oleksid samas grupis

   
public void seaValidaatorGrupp(string vgrupp)
{
    foreach (BaseValidator vali in this.Page.Validators)
    {
          vali.ValidationGroup = vgrupp;
    }
}
Blogged with the Flock Browser

neljapäev, 5. märts 2009

SQL SERVER 2005 süsadminnid ja CONTROL SERVER rollis olevad loginid

Algallikas:
http://www.sqlservercentral.com/blogs/brian_kelley/archive/2009/02/24/detecting-when-a-login-has-implicit-access-to-a-database.aspx


SELECT sp1.[name] [Login], 'sysadmin role' [Method]
FROM sys.server_principals sp1
JOIN sys.server_role_members srm
ON sp1.principal_id = srm.member_principal_id
JOIN sys.server_principals sp2
ON srm.role_principal_id = sp2.principal_id
WHERE sp2.NAME = 'sysadmin'
UNION ALL
SELECT sp3.[name], 'CONTROL SERVER'
FROM sys.server_principals sp3
JOIN sys.server_permissions perm
ON sp3.principal_id = perm.grantee_principal_id
WHERE perm.class = 100
AND perm.[type] = 'CL'
AND state = 'G'
ORDER BY [Login], [Method];
Blogged with the Flock Browser

kolmapäev, 4. märts 2009

ASP.NET web.config faili krüptimine

Käima ajamiseks tuli päev otsa guugeldada. Tänud lõpuks nendele meestele
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/88b15d6b-9baa-4f4d-8942-137185bfdf56/


ASP.NET-i Veebirakendusel või WebServicel vaja turvalisuse tõstmiseks ConnectionStrings osa ära krüptida
Käima sain sellise asjaga, kasutame RSA-d

1. Loome Machine level eksporditava RSA key containeri
aspnet_regiis on programm mille leiab serveril tavaliselt C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 kataloogist

aspnet_regiis -pc "KampusKey" -exp

KampusKey on nüüd selle RSA võtme konteineri nimi, mis pannakse serveri kataloogi
C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

edasi tuleb vaadata mis konto all sul see veebirakendus/veebiteenus töötab

Teed eraldi ASPX lehe, kust selle teada saad

this.LabelIdentity.Text = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

või vaatad IIS-i manageri alt, mis basseinis sul rakendus ujub (Application Pool)

ja annab sellele kontole (tavaliselt NT AUTHORITY\NETWORK SERVICE) RSA võtme konteinerile ligipääsu õiguse

aspnet_regiis -pa "KampusKey" "NT AUTHORITY\NETWORK SERVICE"

Peab mainima, et NETWORK SERVICE on turvalisuse koha pealt üsna hea konto veebirakenduste jooksutamiseks, veelgi parem oleks kohe endale selgeks teha
kuidas luua veebirakenduse jaoks omaette väheste õigustega konto
http://msdn.microsoft.com/en-us/library/ms998297.aspx


rakenduse web.config failis tuleb nüüd lisada rida

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" >
<configSections>
</configSections>

<configProtectedData defaultProvider="RsaProtectedConfigurationProvider" >
<providers>
<add name="KampusVoti" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" keyContainerName="KampusKey" useMachineContainer="true" />
</providers>
</configProtectedData>

<connectionStrings>
<add name="TurukampusConnectionString" connectionString="Data Source=SQLBAAS;Initial Catalog=KAMPUS;User ID=KAMPUS868;Password=HKSDF6834" providerName="System.Data.SqlClient"/>
</connectionStrings>

</configuration>


ja nüüd krüptib selle connectionStrings osa ära

aspnet_regiis –pef "connectionStrings“ “d:\cw-turukampus_webservice” –prov “KampusVoti”

d:\cw-turukampus_webservice on see kataloog serveril ,kus sul rakenduse failid on ja

–prov “KampusVoti” peab kokku lengema web.config failis configProtectedData lisatud provider nimega, see sunnik oli juhendis mainimata

muidu ei tööta saad veateate
Parser Error Message:
Failed to decrypt using provider 'RsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened.


Rakenduses töötab asi ühtemoodi, IIS ise krüptib/dekrüptib connectrionStrings osa lahti

using System.Web.Configuration;

System.Configuration.ConnectionStringsSection konnc = WebConfigurationManager.GetSection("connectionStrings") as System.Configuration.ConnectionStringsSection;
this.Label1.Text = konnc.ConnectionStrings["TurukampusConnectionString"].ConnectionString.Trim();
Blogged with the Flock Browser