4、web开发原则

1、用户权限最小原则:只允许用户做什么。
2、用户不能查看源码(java/c#)。
3、尽量在浏览器端处理(js)
4、客服端验证不能代替服务器验证( 浏览器禁用js、伪造http请求
5、私密信息不要写在js/html中
6、xss跨站脚本漏洞 cross-site script
   说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkId=153133。

HttpRuntime的Web.config里的配置
没有就添加一个:
    <system.web>
    <httpRuntime  requestValidationMode="2.0" />

<%@ Page Language="C#" validateRequest="false" AutoEventWireup="true" CodeBehind="jojoo.aspx.cs" Inherits="jojo.jojoo" %>


http://localhost:12831/jojoo.aspx?msg=++%3Cform+id%3d+%22dd%22+action%3d%22http%3a%2f%2fwww.baidu.com%22+%3E%3Cinput+
type%3d%22text%22+value%3d%22222%22+%2f%3E%3Cinput+type%3d%22submit%22+%2f%3E%3C%2fform%3E

protected void Page_Load(object sender, EventArgs e)
        {
            Label1.Text = Request.Params["msg"];
        }

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

<form id= "dd" action="http://www.baidu.com" ><input type="text" value="222" /><input type="submit" /></form>
<script type="text/javascript">alert(0);</script>

firefox可行,google chrome不行;
转义: Label1.Text = HttpUtility.HtmlEncode(Request.Params["msg"]);

猜你喜欢

转载自onway417.iteye.com/blog/2199662