为了账号安全,请及时绑定邮箱和手机立即绑定

常见的PHP安全攻击

标签:
PHP 安全
  1. SQL注入?

    注入方式:

    用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行。

    通过system()/exec()命令注入,它具有相同的SQL注入机制,但只针对shell命令。

        怎么防止呢?

     使用mysql_real_escape_string()过滤数据

     手动检查每一个数据是否为正确的数据类型

     使用预处理语句并绑定变量

     使用准备好的预处理语句            

     分离数据和SQL逻辑

     预处理语句将自动过滤

    2.XSS攻击 (Cross Site Scripting)

    跨站点脚本攻击,由用户输入一些数据到你的网站,其中包括客户端脚本(通常是js)。如果没有过滤就输出数据到另一个web页面,这个脚本将被执行。

    恶意攻击者往web页面里面插入恶意Script代码,当用户浏览该页面时,嵌入其中web里面的Script代码将会被执行,从而达到恶意攻击用户的目的。

    例如:

https://img1.sycdn.imooc.com//5d2552ed0001f2ad05020205.jpghttps://img1.sycdn.imooc.com//5d2552f60001d98f04340165.jpg

    以上将会发生什么呢?

    烦人的弹窗,刷新或重定向,损坏网页或表单,窃取cookie,AJAX(XMLHttpRequest)

    怎么防止XSS攻击呢?

    使用php的htmlentities()函数过滤再输出到浏览器。

    3.会话固定

    会话安全,假设一个PHPSESSID很难猜测。然而,PHP可以接受一个会话ID通过一个Cookie或者URL。所以,欺骗一个受害者可以使用一个特定的(或其他的)会话ID或者钓鱼攻击。

    4.会议捕获和劫持

    涉及窃取会话ID。如果会话ID存储在Cookie中,攻击者可以通过XSS和JS窃取。如果会话ID包含在URL上,也可以通过嗅探或者从代理服务器那获取。


    怎么防止呢?

    更新ID、如果使用会话,请确保用户使用SSL

    5.跨站点请求伪造(CSRF)

    指一个页面发出的请求,看起来像是网站的信任用户,但不是故意的。它有许多的变体。如:

    <img src='https://example.com/single_click_to_buy.php?user_id=123&item=12345'>

    怎么防止呢?

    对用户会话采用适当的安全措施,例如:给每一个会话更新id和用户使用SSL

    生成另一个一次性的令牌并将其嵌入表单,保存在会话中(一个会话变量),在提交时检查它。

    6.代码注入

    利用计算机漏洞通过处理无效数据造成的。问题出在,当你不小心执行任意代码,通常通过文件包含。写得很糟糕的代码可以允许一个远程文件包含并执行。如许多php函数,如require可以包含URLh或文件名,例如:

https://img1.sycdn.imooc.com//5d2553470001747a06120250.jpg

    怎么防止呢?

    过滤用户输入

    在php.ini中设置禁用allow_url_fopen和allow_url_include。这将禁用fopen/include/require的远程文件

    7.其他一般原则

    不要依赖服务器配置来保护你的应用,特别是当你的web服务器/PHP是由你的ISP管理,或者当你的网站可能迁移/部署到别处,未来再从别处迁移/部署在到其他地方。

    设计服务器端的安全脚本,如:

    使用单行执行,单点身份验证和数据清理

    在所有的安全敏感页面嵌入一个PHP函数/文件,用来处理所有登录/安全性逻辑检查

    确保你的代码更新,并打上最新补丁


点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
11
获赞与收藏
116

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消