PHP开发中常见的安全问题详解和解决方法(如S(7)


<form action="phpben.com?user_name=benwin" onSubmit="alert('这是xss攻击的例子');" class= "" > 
<input type="submit" value="提交" > 
</form>


当提交表单的时候就会弹出提示框。

(1)     很明显$user_name在保存进数据库的时候没有过滤xss字符(和防注入很像,这里举例说明)==>发现漏洞

(2)     构造xss代码:benwin” onSubmit=”alert(‘这是xss攻击的例子');” class= “” 传入数据库

(3)     骗相关人员进来点击“提交”按钮

4.2常见xss攻击地方

(1)Js地方

复制代码 代码如下:


<script language="javascript"> 
var testname =" <?php echo $testname;?>"; 
</script>


$testname的值只要符合js闭合关系:“”;alert(“test xss “);”(以下同理)

(2)form表单里面

复制代码 代码如下:


<input type="text" value="<?php echo $val; ?>" />



(3)a标签

复制代码 代码如下:


<a href="benwin.php?id= <?php echo $id; ?>">a标签可以隐藏xss攻击</a>



(4)用得很多的img标签

复制代码 代码如下:


<img src="<?php echo $picPath; ?>" />


甚至一些文本中插入整个img标签并且用width、 height、css等隐藏的很隐蔽

(5)地址栏

总之,有输出数据的地方,更准确的说是有输出用户提交的数据的地方,都有可能是XSS攻击的地方。

4.3防XSS方法

防xss方法其实和防注入很相似,都是一些过滤、代替、实体化等方法

(1)过滤或移除特殊的Html标签。

例如:< 、>、&lt;,、&gt; '、”、<script>、 <iframe> 、&lt;,、&gt;、&quot

(2)过滤触发JavaScript 事件的标签。例如 onload、onclick、onfocus、onblur、onmouseover等等。

(3)php一些相关函数,strip_tags()、htmlspecialchars()、htmlentities()等函数可以起作用

5、CSRF

CSRF跨站请求伪造cross site request forgery。

5.1简单说明CSRF原理

(1)A登录Site1(如现在网民常上的淘宝、微博、QQ等),产生一些信息,session、cookies等等,且一直保持没退出。

(2)A再登录Site2(如一些成人网等,至于怎么跑到Site2,多数是Site通过些手段,邮件欺骗等),打开site2的浏览器和打开site1的一样,否则无效

(3)Site2站中伪造了Site1的http请求(如修改密码,买东西,转账等),Site1的服务器误以为A在site1的正常操作(因为同浏览器且A还没登出),然后就运行了请求,那么csrf已成功操作。

csrf和xss很相似。xss也能伪造请求,csrf也能制造脚本。

伪造的请求可以很多方面,发邮件、改密码、返回用户信息、交易等等,所以相对与xss攻击来说csrf危害更严重。

5.2防范方法。

对于phper

(1)严密操控执行入口

执行一些敏感操作比如改密码这些操作前判断请求来源,只有本站服务器发的请求才可以执行。判断方法可以判断ip来源。非本站服务器ip不会执行。

(2)本站有外链的话做些必要操作

一般site2的hacker会在site1(比如论坛里)里发欺骗连接,因为在site1诱骗的相关人员一般都登录site1了,满足csrf气体条件之一。

如当你点击QQ邮件里面的长外链时候,回跳转到一个页面提示“有风险”之类,这样不仅可以减低跳出率,一些不懂的人看到这样的提示,若不是非必要而是处于好奇点击的连接一般不会继续点击访问;还有是QQ邮件正文里的图片在加载内容时是不加载图片的,要点击“显示图片”按钮才显示图片,这里一个原因之一就是避免攻击。

当然对于用户体验来说这是不可取的,可以优化的是判断到一些网址(如QQ本身网址)是安全直接可以显示(不用提示),而可疑的才提示或禁止。

(3)防止csrf也可以用防xss的方法。

6、防盗链

盗链问题增加服务器的负担。盗链就是盗链网站盗取被盗链网站资源来实现一些功能。盗链方面主要是图片、视频、以及其他资源下载文件。

方法:判断ip,只有本站服务器才能使用站点资源,否则不能使用。

代码:

(1)在Apache htaccess添加

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/9b60f9a26cc0359ef55395098f85bfd1.html