2017-03-19 17 views
0

私はdatatableをループし、自分のHTMLをaspx Webページで作成しています。コードは正常に動作していますが、HTMLソースにイベントハンドラ関数の名前が表示されています。以下のように。asp.netの動的コントロールのメソッド名を非表示

HTMLソースからonclick関数名を非表示にする方法がありますが、隠しフィールドも表示されません。私は他の方法を使用することに開放しています。

<div> 
    <a onclick="Role_Click;" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$ctl01','')">OEEC</a> 
    <input type="hidden" name="ctl00$ContentPlaceHolder1$ctl02" value="1|OEEC"> 
</div> 

以下は私のC#コードです。

public partial class Home : System.Web.UI.Page 
{ 
    BAL bal = new BAL(); 
    string message = ""; 
    int messageStateId; 
    DataTable dtEmployeeRoles; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     LoadEmployeeRoles(); 
    } 

    void LoadEmployeeRoles() 
    { 
     Employee employee = (Employee)Session["CurrentEmployee"]; 
     dtEmployeeRoles = bal.GetEmployeeRoles(employee, ref message, ref messageStateId); 

     foreach (DataRow dr in dtEmployeeRoles.Rows) 
     { 
      HtmlGenericControl roleDiv = new HtmlGenericControl("div"); 
      LinkButton roleButton = new LinkButton(); 
      HiddenField hfRoleID = new HiddenField(); 

      roleButton.Click += roleButton_Click; 
      roleButton.OnClientClick = "Role_Click"; 
      roleButton.Text = dr["RoleName"].ToString(); 

      hfRoleID.Value = dr["RoleID"].ToString() + "|" + dr["RoleName"].ToString(); 

      roleDiv.Controls.Add(roleButton); 
      roleDiv.Controls.Add(hfRoleID); 
      roles.Controls.Add(roleDiv); 
     } 
    } 

    void roleButton_Click(object sender, EventArgs e) 
    { 
     LinkButton lb = (LinkButton)sender; 
     HiddenField hf = new HiddenField(); 
     Role role = new Role(); 
     role.ID = 0; 
     role.Name = null; 
     foreach (Control c in lb.Parent.Controls) 
     { 
      if (c is HiddenField) 
      { 
       hf = c as HiddenField; 
       role.ID = Convert.ToInt32(hf.Value.ToString().Split('|')[0]); 
       role.Name = hf.Value.ToString().Split('|')[1]; 
      } 
     } 

     Session["CurrentRole"] = role; 
     if (role.ID == 1) 
     { 
      Response.Redirect("~/Page1.aspx"); 
     } 
     else 
     { 
      Response.Redirect("~/Page2.aspx"); 
     } 
    } 

} 
+0

ユーザーのブラウザでHTMLコードのメソッド名と非表示フィールドを非表示にしますか? –

+0

はい、ユーザーは非表示のフィールド値で再生できません – braceyourself

答えて

0

visible属性をfalseに設定することで、HiddenFieldコントロールをビューソースから非表示にすることができます。

0

HTML、Javascript、およびCSSをブラウザに送信する場合は、これを解釈してページ、コード、スタイルを生成する必要があります。

ブラウザで情報を非表示にする唯一の方法は、ブラウザに情報を送信しないことです。

通常のユーザーにとっては、コードを修正したくないことを防ぐためにあまり多くのことを行う必要はありません。

しかしクラッカーにとっては不可能です!

thisの記事では、Webアプリケーションのセキュリティの基本を学ぶことができます。基本をまとめる

  • は、クライアント側での重要な情報を隠してはいけません。
  • サーバー上のクライアント入力フィールド情報を検証します。
関連する問題