我正在尝试将 javascript 源作为文本保存到 mysql 表。我使用 MEDIUM TEXT 作为数据库中的数据类型。测试时,我注意到如果文本包含alert();要保存到数据库的 textarea 中的任何位置,我将无法成功保存文本。我了解 XSS 漏洞,并认为这可能是服务器提供商的内置预防措施,因此我什至尝试将字符串保存为 base64 编码。在尝试保存源文本时,我仍然收到 403 禁止错误。
关于 403 Forbidden 错误的描述是: You don't have permission to access / on this server.
$string1 = 'console.log("test");';
//successfully saves when attempting to insert into database
$string2 = 'alert("boo");';
//error 403 Forbidden when attempting to insert into database
$string3 = 'alert("boo");';
$encstr = base64_encode($string3);
//error 403 Forbidden when attempting to insert into database
任何想法如何修复或规避?这是我正在使用的新服务提供商 (namecheap),在我的 digitalocean VPS 上运行相同的代码时,我没有收到此错误。
更新显示来源:
<?php
require("conn.php");
if(isset($_POST["savecode"])){
$getuniqueid = uniqid();
$gettime = time();
$getscriptcode = $_POST["scriptcode"];
$sanitizescriptcode = mysqli_real_escape_string($conn, $getscriptcode);
//$sanitizescriptcode = htmlspecialchars($sanitizescriptcode);
$sanitizescriptcode = base64_encode($sanitizescriptcode);
$insertscript = "INSERT INTO scriptcode (`postid`,`content`,`ttime`) VALUES('$getuniqueid','$sanitizescriptcode','$gettime')";
mysqli_query($conn, $insertscript)or die("Fatal error attempting to save JavaScript");
header("Location: ?id=".$getuniqueid);
exit();
}
?>
<!DOCTYPE html>
<html>
<body>
<div id="hbanner"><form method="post"><button type="submit" name="savecode" id="savecode" class="btn btn-info">SAVE</button></div>
<textarea id="scriptcode" name="scriptcode" class="codeinput"></textarea></form>
</body>
</html>
潇潇雨雨