next up previous contents
Next: chroot java not work Up: CHROOT Previous: 自訂 SELinux 政策三   Contents

PHP 移除 JavaScript 及 html tags

  1. JavaScript 不致於造成系統及資料損壞,但因程式執行該用戶的的 JavaScript,可能會影響用戶 moodle 的執行頁面,故在 php 存入用戶程式碼時,移除 <script> 標籤。
    $current = str_replace("\r\n", PHP_EOL, htmlspecialchars_decode($currentanswer['answer']));
    $current = preg_replace('/<.*script.*>/', '', $current);
    
  2. 上述方法只能移除 JavaScript 中 <script> 標籤,其他 html 標籤也會影響網頁顯示,雖不致於影響系統安全,不過移除可避免不論有意還是無意的輸入。因 php 函式 strip_tags 很多狀況回傳空字串,故以字串取代函式直接將大於小於符號轉成 &lt;\1&gt;
    $response->sh_sout = preg_replace('/<([^<>]*)>/', '&lt;\1&gt;', $response->sh_sout);
    $response->sh_aout = preg_replace('/<([^<>]*)>/', '&lt;\1&gt;', $response->sh_aout);
    



2017-10-27