MS-PHP-安全

  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=,你的服务器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编码,或者对输入进行过滤,过滤掉类似

你可能感兴趣的:(MS-PHP-安全)