Web安全问题

漏洞的产生主要是两个原因导致:权限,数据处理

1、XSS跨站脚本漏洞(在网页中嵌入客户端脚本)
XSS攻击分成 两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句;另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。因为客户端(浏览器)无法识别脚本是否是恶意的代码,跨站漏洞脚本便运行并获取cookie活着session。
下面看下怎么利用XSS:
假设我们有一个文本输入框:
<input type="text" name="username" value="kaizhu">
如果用户输入 /><script>alert(document.cookie)</script><!-  那代码就变成了
<input type="text" name=" username" value=""/><script>alert(document.cookie)</script><!- ">
嵌入的js代码就会被执行。攻击的角度完全取决于用户输入的脚本。
你可以试着运行下面的脚本:
<?php
setcookie('test', 1234);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>xss</title>
</head>
<body>
<input type="text" name="username" value=""/><script>alert(document.cookie)</script><!- ">
</body>
</html>
XSS发生的原因是,因为,我们没有对用户输入的数据进行处理和过滤。我们并不能保证每位用户输入的信息都是合法的。在php提供了大量的字符串处理函数,最简单的就是strip_tags函数,直接将所有标签除去。

可能你会想,前面不是用户在自己的代码上修改,其他人有怎么看见呢。。当然,前面只是演示下XSS攻击的方式。
因为想盗取cookie的,攻击者会通过邮件或者其他方式发送一个url链接给你,url嵌入来js脚本,假如你点击链接,那么js脚本就会自动运行,然后通过ajax将获取的信息发送到制定的地方,这样攻击者就会获取你的信息了。

XSS漏洞修复:
原则:不能想当然地认为客户输入的数据是合法的
注意: XSS可使用的技术有JavaScript、VBScript、ActiveX、或Flash,且通常通过页面表单提交注入到web应用中并最终在用户的浏览器客户端执行。
1、将重要的cookie标记为http only,   这样的话Javascript 中的document.cookie语句就不能获取到cookie了。
2、只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字。而数字之外的字符都过滤掉。
3、对数据进行取出代码处理。
4、过滤或移除特殊的Html标签, 例如: <script>, <iframe> ,  &lt; for <, &gt; for >, &quot for。
5、过滤JavaScript 事件的标签。例如 "οnclick=", "onfocus" 等等。
6、对数据需要在输入或输出时对其进行字符过滤或转义处理。
7、限制用户提交的数据的长度。例如:注册时,用户名的长度。

2、SQL注入攻击(SQL injection)
SQL注入弱点是存在基于数据库的Web应用中,黑客利用精心组织的SQL语句,通过Web接口(通常指我们的Web页面的表单)注入的Web应用中,从而获取后台数据库的访问与存取权的一种安全弱点。
使用SQL注入攻击多在特殊字符上下手脚,如“’”,“*”,“/” ,”--”等。
使用正则表达式屏蔽特殊字符
用正则表达式限制特殊字符输入。
对特殊字符进行转义
转义之后,特殊字符完全变成来简单的字符,不会使得sql语句产生新的逻辑。
使用?占位符,数据库查询仅需要传入参数
对数据库操作时候,仅需要传入参数,避免sql语句的输入。

3、远程命令执行,控制获取服务器信息
web站点的入口功能异常强大,强大到可以通过客户端的浏览器去调用shell或者其他脚本来操作服务器。
远程命令执行漏洞一般发生在Web系统允许用户通过Web应用接口访问与管理Web服务器且没有经过严格的输入验证与过滤。
严格控制Web服务器用户的权限
通过管理web服务器用户的权限,控制其的操作和代码的执行的权限。
严格执行用户输入的合法性检查

4、目录遍历(Directory traversal)
在web目录下,通常我们通过文件夹统一管理我们的文件。如果允许用户可以通过浏览器来看到web整个目录的布局,则为攻击者提供了很好的攻击思路,甚至可以通过web的目录情况来,查看整个服务器的文件结构。
限制Web应用在服务器上的运行,严格控制Web服务器用户的权限
进行严格的输入验证,控制用户输入非法路径
通过apache或者站点入口文件来控制,关闭目录遍历
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值