Web 网站安全
本课教学内容
URL操作攻击
Web跨站脚本攻击
SQL注入
密码保护与验证
URL 操作攻击
URL 操作攻击介绍
例子中,该订单从数据库获取数据的 URL 为: http://IP:端口/目录/?orderno=10034562
因为第一个订单的编号为 10034562,所以,从客户端源代码上讲,第一个订单右边的"查看明细"链接看起来是这样的: <a href="http://IP:端口/目录/?orderno=10034562">查看明细</a> 该 URL 非常直观,可以从中看到是获取订单号为 10034562 的数据,因此,给了攻击者机会
URL 操作攻击
URL 操作攻击介绍
攻击者可以很容易地尝试将如下 URL 输入到地址栏中: http://IP:端口/目录/?orderno=10034563
表示命令数据库查询订单号为 10034563 的明细信息,当然,刚开始的尝试,或许得不到结果(该订单号可能不存在),但是经过足够次数的尝试,总可以给攻击者得到结果的机会。如输入: http://IP:端口/目录/?orderno=10034585
URL 操作攻击
因为该订单明细在数据库表的 T_ORDERITEM 中存在。这里就造成了一个不安全的现象:用户可以查询不是他购买的鲜花订单信息
URL 操作攻击
还有更加严重的情况,如果网站足够不安全的话,攻击者可以不用登录,直接输入上面格式的 URL(如 http://IP:端口/目录/?orderno=10034585),将信息显示出来。这样,上面的 Web 程序导致该鲜花订购系统网站为 URL 操作攻击敞开了大门
解决方法
要解决以上 URL 操作攻击,需要程序员进行非常周全的考虑。程序员在编写 Web 应用的时候,可以从以下方面加以注意:
为了避免非登录用户进行访问,对于每一个只有登录成功才能访问的页面,应该进行 session 的检查(session 检查的内容已经在前面章节提到)
解决方法
要解决以上 URL 操作攻击,需要程序员进行非常周全的考虑。程序员在编写 Web 应用的时候,可以从以下方面加以注意:
为限制用户访问未被授权的资源,可在查询时将登录用户的用户名也考虑进去。如用户名为 guokehua,所以 guokehua 的每一个订单后面的"查看明细"链接可以设计为这样:
解决方法
<a href="http://IP:端口/目录/?orderno=10034563&account=guokehua">
查看明细
</a>
这样,用于该订单从数据库获取数据的 URL 为:
http://ip:端口/目录/?orderno=10034563&account=guokehua
在向数据库查询时,就可以首先检查"guokehua"是否在登录状态,然后根据订单号(10034563)和用户名(guokehua)综合进行查询。这样,攻击者单独输入订单号,或者输入订单号和未登录的用户名,都无法显示结果
Web 跨站脚本攻击
跨站脚本攻击的原理
跨站脚本在英文中称为 Cross-Site Scripting,缩写为 CSS。但是,由于层叠样式表(Cascading Style Sheets)的缩写也为 CSS,为不与其混淆,特将跨站脚本缩写为 XSS
Web网站安全 来自淘豆网m.daumloan.com转载请标明出处.