首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

SQL注入和XSS攻击

SQL注入: 所谓SQL注入,就是通过把SQL命令插入到提交的Web表单或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,导致数据库中的信息泄露或者更改。 防范: 1.永远不要信任用户的输入,将用户输入的数据当做一个参数处理: 使用参数化的形式,也就是将用户输入的东西以一个参数的形式执行,而不是将用户的输入直接嵌入到SQL语句中,用户输入就被限于一个参数。 2.避免提示详细的错误信息: 当用户输入错误的时候,避免提示一些详细的错误信息,因为黑客们可以利用这些消息,使用一种标准的输入确认机制来验证所有的输入数据的长度、类型、语句、企业规则等。 3. 加密处理: 将用户登录名称、密码等数据加密保存。加密用户输入的数据,然后再将它与数据库中保存的数据比较,这相当于对用户输入的数据进行了“消毒”处理,用户输入的数据不再对数据库有任何特殊的意义,从而也就防止了攻击者注入SQL命令。 4.确保数据库安全: 锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限,撤销不必要的公共许可,如果web应用不需要访问某些表,那么确认它没有访问这些表的权限。如果web应用只需要只读的权限,那么就禁止它对此表的 drop 、insert、update、delete 的权限,并确保数据库打了最新补丁。

02

投票系统如何防止一个用户多次投票

最简单的方法就是在用户投票以后记录下一定信息,每次投票时就检测这个特定信息是否存在。实现的方法我想到了3种,具体如下: 1,用Page.Session;   private void saveInSession()   {    if(Page.Session["ok"]==null)    {     Vote();     Page.Session["ok"]=1;    }    else    {     NoVote();    }   } 2,用Request.Cookies;   private void saveInCookie()   {    if(Request.Cookies["ok"]==null)    {         Vote();         HttpCookie cookie = new HttpCookie("ok");         cookie.Values.Add("visit","1");         cookie.Expires = DateTime.Now.AddYears(1);         Response.AppendCookie(cookie);    }    else    {     NoVote();     }   } 3,用Page.Cache; private void saveInCache()   {    if(Page.Cache["ok"]==null)    {     Vote();     Page.Cache["ok"]=1;    }    else    {     NoVote();    }   } 要做复杂点也可以把用户的ip记录下来,写入数据库,在投票前先查看数据库是否有投票记录,这个方法就复杂多了,但是可以避免前几种用户关掉页面又进入可以投票的问题。 若大家还有什么更好的方案请回帖。

02
领券