Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

Asp.net 4.0 ValidateRequest Sorunu

Asp.net ile geliştirdiğimiz projelerde html içeriğe sahip string ifadeleri veritabanına kaydetmek istediğimizde normal şartlarda hata alırız.Bunun nedeni sistem bu olayı bir XSS saldırısı olarak algılamaktadır.Bu yüzden bu tür istekler sunucu tarafından kabul edilmez ta ki siz müdahale edene kadar.

ValidateRequest = "false" yaparsak bu sorun ortadan kalkacaktır.İster herhangi bir sayfanın design tarafında ister tüm proje için geçerli olan web.config tarafında bu sorunu çözebiliriz.

Kullanmak istediğimiz sayfanın başına;

ValidateRequest="false"

Web.config tarafında ;

<pages validaterequest="false"></pages>

Eğer projemizi asp.net 4.0 ile geliştiriyor isek web.config dosyamızda küçük bir değişiklik daha yapmamız gerekiyor.

<system.web>

<httpruntime requestvalidationmode="2.0">

</httpruntime>

</system.web>

Bu yazımın bir benzerini daha önceki yazılarımda paylaşmıştım ama 4.0 la gelen bir özelliği atladığım için tekrar yazmanın daha iyi olacağını düşündüm, yararlı olması dileğiyle;

Osman KURT

Yazılım Geliştirici ve Grafiker

WebConfig Hata Olaylarında Sayfa Yönlendirme

Arkadaşlar bir proje yaparken hepimizin bazı eksiklikleri olabilir bazı durumlarda bazı şeyleri düşünemeyiz böyle durumlarda sitemizde gezinen kullanıcının hem güvenini sarsmamak hemde kendi projenizin güvenliğini tehlikeye atmamak için bu hataları çok iyi bir şekilde yönetmemiz gerek. Çünkü hata yayınlanırken gösterilen bir kod parçası dahi kötü niyetli insanlar için kaçınılmaz bir nimet olabilir. Bu yüzden herhangi bir hata oluşması durumunda kullanıcıya hata mesajını göstermek yerine onu başka bir sayfaya yönlendirmek düşünüyorum ki en iyi seçenek. Lafı fazla uzatmadan kodlarımıza geçelim. Bu olayı web config dediğimiz yapılandırma sayfasında gerçekleştiriyoruz. Alt kısım da vereceğim kodlarla bu işlem basti bir şekilde tamamlanacaktır.

<system.web>

<customErrors mode=“On“>
<error statusCode=“400“ redirect=“BadRequest.aspx“/>
<error statusCode=“403“ redirect=“Yasak.aspx“/>
<error statusCode=“404“ redirect=“SayfaBulunamadi.aspx“/>
<error statusCode=“500“ redirect=“ServerError.aspx“/>
</customErrors>
</system.web>


 
Bu kodlarımızı yazdık ve işlemimiz sona erdi en azından tehlikelerden biri böylece sonlanmış oldu.

Görüşmek Üzere;

Osman KURT

Yazılım Geliştirici ve Grafiker

Validation of viewstate MAC failed Hatası

'Validation of viewstate MAC failed' hatasi, sayfada uzun süre bekleyip, sayfayi tetikleyecek herhangi birseye tikladiginiz vakit karsiniza çikacaktir. Sayfa post edildigi vakit state'te takilip hata ekrani çikaracaktir.

"Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster." gibi bir hata alıyorsanız;

Web confgi içinde System.Web altına;

<system>

<pages validateRequest="false" enableEventValidation="false" anableViewStateMac="false" viewStateEncrytionMode="Never">

</system>

evet arkadaşlar bu kodlarımızı webconfiğin içine yazdığımız da artık machinekey hatası almıyacağız.

Görüşmek Üzere;

Osman KURT

Yazılım Geliştirici ve grafiker