<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 防止SQL注入,進行數據過濾 在ThinkPHP5中提供了許多數據輸入過濾方法,例如 ``` //強制轉換為Email格式 $this->request->post('email','',FILTER_VALIDATE_EMAIL); $this->request->post('email','','email'); //強制轉換為數字 $this->request->post('id/d','0'); ``` 常用的修飾符如下 | 修飾符 | 作用 | | :-- | :-- | | s | 強制轉換為字符串類型 | | d | 強制轉換為整型類型 | | b | 強制轉換為布爾類型 | | a | 強制轉換為數組類型 | | f | 強制轉換為浮點類型 | ## 防止XSS跨站注入 解決防范XSS跨站注入的首先是按照上方的SQL注入做好請求數據過濾,其次是做好數據輸出時的編碼,我們在視圖模板中編寫代碼時,可以通過添加`htmlentities`對HTML代碼做實體編碼,例如 ``` <input type="text" name="username" value="{$username|htmlentities}" /> ``` 千萬不要直接使用以下的代碼,以下代碼都是非常不安全的 ``` <input type="text" name="username" value="{$Think.get.username}" /> 或 <input type="text" name="username" value="{$_GET['username']}" /> ``` ## CSRF跨站請求 CSRF全稱為`cross site request forgery`,中文意思為:`跨站點偽裝請求`。 >跨站點請求的原理就是`用戶A`在`站點1`發布上傳粘貼了一個`站點2`的URL,`用戶B`不明就里的點擊了`站點2`的URL,而這個URL因為是偽裝請求`站點1`修改密碼(其它危險請求)的操作。此時`用戶A`就已經獲取了`用戶B`的賬戶信息。 例如我們常常在編寫表單提交的時候都是如下的寫法 ``` <form action=""> <input type="password" name="newpassword" /> <input type="submit" /> </form> ``` 以上的寫法很容易產生CSRF跨站點偽裝請求。 在ThinkPHP5可以很方便的使用`token`的方式來防范這種威脅,比如我們將上面的代碼改寫為 ``` <form action=""> {:token()} <input type="password" name="newpassword" /> <input type="submit" /> </form> ``` 我們添加了一個`{:token()}`,由于這個token是我們服務端動態輸出的,偽裝者的服務器沒法獲取該值,此時我們再做好服務端驗證這個`token`是否有效即可,常用的方法如下 ``` $token = $this->request->post('__token__'); //驗證Token if (!$token || !\think\Validate::is($token, "token", ['__token__' => $token])) { $this->error("請勿非常請求"); } ``` 更多Token表單令牌的使用方法可以參考ThinkPHP5官方文檔:[http://www.hmoore.net/manual/thinkphp5/193918](http://www.hmoore.net/manual/thinkphp5/193918) ## 服務器安全 ### 目錄安全 目錄安全在是經常容易生產問題的一個環節,很多時候我們都會忽略或忘記進行站點目錄安全的配置。 我們建議在生產環境只開放`uploads`和`runtime`目錄的讀寫權限,其次還需要關閉`uploads`目錄執行PHP的權限,因為很多時候用戶上傳惡意腳本,而服務端`uploads`目錄又未屏蔽PHP,導致用戶數據泄漏丟失。 通常情況在生產環境下建議使用 ``` chown www:www /var/www/yoursite -R chmod 655 /var/www/yoursite -R chmod u+w /var/www/yoursite/runtime -R chmod u+w /var/www/yoursite/public/uploads -R ``` 通過以上的配置還不夠,我們還需要繼續對服務器做WEB配置以限制PHP腳本的運行 --- ### WEB配置 Nginx可以通過以下配置禁止PHP腳本執行 ``` location ~ ^/(uploads|assets)/.*\.(php|php5|jsp)$ { deny all; } ``` Apache可以通過在`.htaccess`中配置來禁用PHP腳本執行 ``` RewriteEngine on RewriteCond % !^$ RewriteRule uploads/(.*).(php)$ – [F] ``` 或使用 ``` <Directory "/www/yoursite/public/uploads"> <Files ~ ".php"> Order allow,deny Deny from all </Files> </Directory> ``` 其次在新增網站配置時務必綁定`public`目錄為運行目錄,同時啟用`open_basedir`限制只允許FastAdmin的根目錄,例如:`fastcgi_param PHP_VALUE "open_basedir=/var/www/fastadmin/:/tmp/:/proc/";` 通常也建議修改`php.ini`,禁用不安全的函數,配置如`disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看