asp.net ValidateRequest = false không làm việc với asp.net 4.0

1. Với mục đích loại bỏ XSS, để remove các thẻ html, javascript đi, mình set

<system.web>
    <pages validateRequest="false">
    </pages>
</system.web>
-> Nhưng nó vẫn không chạy, trong khi làm việc với asp.net 2.0 thì ngon.
Sau khi google 1 một lúc thì tìm ra cái này, chạy thấy ngon, chia sẻ bà con dùng t
<system.web>
  <httpRuntime requestValidationMode="2.0" />
  ...
  <pages ... validateRequest="false" />
</system.web>

Advertisements

jquery ValidateEngine, tấn công XSS

1. Validate (dung jquery)
– Nhúng jQuery validate vào control asp.net (tuy được nhưng chưa được mượt lắm)
– Tuy nhiên: việc làm việc với jquery validate không được mượt so với dùng validate control của Microsoft
2. XSS
– Trong asp.net thì bản thân nó đã coi javascript là tấn công (ValidateRequest=”true”)
– Nếu ValidateRequest=”false” -> cho qua nhưng mình có 2 trường hợp
+ Remove các thẻ HTML, Javascript
+ Encode các thẻ HTML, Javascript
– Em có viết 1 class utils để làm việc này
+ StringHelper.RemoveHtmlJavascriptTag(string text) -> remove tất cả các thẻ html VD: <script>alert(‘hello’);</script> thành alert(‘hello’);
+ StringHelper.EncodeHTMLTag(string text) -> Encode các thẻ html, VD: <script>alert(‘hello’);</script> thành “&lt;script&gt;alert('hello');&lt;/script&gt;”, hiển thị vẫn là <script>alert(‘hello’);</script>

3. Demo (source code đính kèm)
1. http://localhost:54713/Validate/XSS.aspx (ví dụ trang bị xss)
2. http://localhost:54713/Validate/XSSShield.aspx (ví dụ trang được encode)
3. http://localhost:54713/Validate/ClientValidate.aspx (ví dụ nhúng jquery validate)

Sử dụng CustomValidator hiển thị thông báo trong ASP.NET

1. Không muốn Control Validadation hiển thị sau Control muốn validate
– Dùng thuộc tính Display =”None”

<asp:RequiredFieldValidator ID=”reqCompany” runat=”Server” Display=”None” ControlToValidate=”ddlCompany”
ErrorMessage=”Bạn phải chọn công ty” SetFocusOnError=”true” InitialValue=””></asp:RequiredFieldValidator>

2. aspx

–  Thêm control CustomValidator vào trang .aspx

<asp:ValidationSummary ID=”valSummary” runat=”Server” ShowSummary=”true” />
<asp:CustomValidator ID=”customMessage” runat=”Server”>&nbsp;</asp:CustomValidator>

3. aspx.cs

– Trong PageLoad:

+ Set thuộc tính IsValid = true (Hợp lệ)

+ ErrorMessage = string.Empty (Gán về trống).

protected void Page_Load(object sender, EventArgs e)
{
customMessage.IsValid = true;
customMessage.ErrorMessage = string.Empty;

}

– Sau khi Save hoặc Update

+  Set IsValid = false (Không hợp lệ)

+ ErrorMessage =”Nội dung muốn thông báo.”

protected void btnSave_Click(object sender, EventArgs e)
{
if (!Page.IsValid) return;

customMessage.ErrorMessage = “Nhập thành công.”;
customMessage.IsValid = false;

ddlCompany.SelectedIndex = 0;
txtDetail.Text = string.Empty;
}