源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)

  • 时间:2022-05-26 00:32 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
浅谈Php安全和防Sql注入,防止Xss攻击,防盗链,防CSRF [b]前言:[/b] 首先,笔者不是web安全的专家,所以这不是web安全方面专家级文章,而是学习笔记、细心总结文章,里面有些是我们phper不易发现或者说不重视的东西。所以笔者写下来方便以后查阅。在大公司肯定有专门的web安全测试员,安全方面不是phper考虑的范围。但是作为一个phper对于安全知识是:“知道有这么一回事,编程时自然有所注意”。 [b]目录: [/b]1、php一些安全配置 (1)关闭php提示错误功能 (2)关闭一些“坏功能” (3)严格配置文件权限。 2、严格的数据验证,你的用户不全是“好”人 2.1为了确保程序的安全性,健壮性,数据验证应该包括内容。 2.2程序员容易漏掉point或者说需要注意的事项 3、防注入    3.1简单判断是否有注入漏洞以及原理    3.2常见的mysql注入语句        (1)不用用户名和密码        (2)在不输入密码的情况下,利用某用户        (3)猜解某用户密码 (4)插入数据时提权 (5)更新提权和插入提权同理 (6)恶意更新和删除 (7)union、join等 (8)通配符号%、_ (9)还有很多猜测表信息的注入sql    33防注入的一些方法        2.3.1 php可用于防注入的一些函数和注意事项。        2.3.2防注入字符优先级。 2.3.3防注入代码     (1)参数是数字直接用intval()函数     (2)对于非文本参数的过滤 (3)文本数据防注入代码。 (4)当然还有其他与addslashes、mysql_escape_string结合的代码。 4、防止xss攻击 4.1Xss攻击过程 4.2常见xss攻击地方 4.3防XSS方法 5、CSRF 5.1简单说明CSRF原理 5.2防范方法 6、防盗链 7、防拒CC攻击 [b]1、php一些安全配置[/b] [b](1)关闭php提示错误功能[/b] 在php.ini 中把display_errors改成
[url=benwin.php?id= <?php echo $id; ?>] [b](4)用得很多的img标签 [/b] 甚至一些文本中插入整个img标签并且用width、 height、css等隐藏的很隐蔽 [b](5)地址栏[/b] 总之,有输出数据的地方,更准确的说是有输出用户提交的数据的地方,都有可能是XSS攻击的地方。 [b]4.3防XSS方法[/b] 防xss方法其实和防注入很相似,都是一些过滤、代替、实体化等方法 (1)过滤或移除特殊的Html标签。 例如:< 、>、<,、> '、”、<script>、 <iframe> 、<,、>、" (2)过滤触发JavaScript 事件的标签。例如 onload、onclick、onfocus、onblur、onmouseover等等。 (3)php一些相关函数,strip_tags()、htmlspecialchars()、htmlentities()等函数可以起作用 [b]5、CSRF[/b] CSRF跨站请求伪造cross site request forgery。 [b]5.1简单说明CSRF原理[/b] (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危害更严重。 [b]5.2防范方法。[/b] 对于phper (1)严密操控执行入口 执行一些敏感操作比如改密码这些操作前判断请求来源,只有本站服务器发的请求才可以执行。判断方法可以判断ip来源。非本站服务器ip不会执行。 (2)本站有外链的话做些必要操作 一般site2的hacker会在site1(比如论坛里)里发欺骗连接,因为在site1诱骗的相关人员一般都登录site1了,满足csrf气体条件之一。 如当你点击QQ邮件里面的长外链时候,回跳转到一个页面提示“有风险”之类,这样不仅可以减低跳出率,一些不懂的人看到这样的提示,若不是非必要而是处于好奇点击的连接一般不会继续点击访问;还有是QQ邮件正文里的图片在加载内容时是不加载图片的,要点击“显示图片”按钮才显示图片,这里一个原因之一就是避免攻击。 当然对于用户体验来说这是不可取的,可以优化的是判断到一些网址(如QQ本身网址)是安全直接可以显示(不用提示),而可疑的才提示或禁止。 (3)防止csrf也可以用防xss的方法。 [b]6、防盗链[/b] 盗链问题增加服务器的负担。盗链就是盗链网站盗取被盗链网站资源来实现一些功能。盗链方面主要是图片、视频、以及其他资源下载文件。 方法:判断ip,只有本站服务器才能使用站点资源,否则不能使用。 代码: (1)在Apache htaccess添加
[u]复制代码[/u] 代码如下:
RewriteEngine on   RewriteCond %{HTTP_REFERER} !^$ [NC]  RewriteCond %{HTTP_REFERER} !phpben.com [NC]  RewriteCond %{HTTP_REFERER} !google.com [NC]   RewriteCond %{HTTP_REFERER} !baidu.com [NC]   RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]  RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]  RewriteRule ^(.*)$ http:\/\/phpben.com\/image\/$1 [L]
这样,凡是不是phpben.com google.com baidu.com zhuaxia.com 域名请求的都返回replace.gif代替返回 [b]7、防CC攻击[/b] CC攻击:是利用不断对网站发送连接请求致使形成拒绝服务的目的。 详细百度百科:http://baike.baidu.com/view/662394.htm 代码:
[u]复制代码[/u] 代码如下:
session_start();  $ll_nowtime = $timestamp ;  if (session_is_registered('ll_lasttime')){  $ll_lasttime = $_SESSION['ll_lasttime'];  $ll_times = $_SESSION['ll_times'] + 1;  $_SESSION['ll_times'] = $ll_times;  }else{  $ll_lasttime = $ll_nowtime;  $ll_times = 1;  $_SESSION['ll_times'] = $ll_times;  $_SESSION['ll_lasttime'] = $ll_lasttime;  }  if (($ll_nowtime - $ll_lasttime)<3){  if ($ll_times>=5){  header(sprintf("Location: %s",'http://127.0.0.1'));  exit;  }  }else{  $ll_times = 0;  $_SESSION['ll_lasttime'] = $ll_nowtime;  $_SESSION['ll_times'] = $ll_times;  }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部