Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 阵列上的输出转义以防止xss_Php_Json_Jtable_Xss_Sql Injection - Fatal编程技术网

Php 阵列上的输出转义以防止xss

Php 阵列上的输出转义以防止xss,php,json,jtable,xss,sql-injection,Php,Json,Jtable,Xss,Sql Injection,我需要写一份关于如何防止SQL注入和XSS的报告,以及如何提高我创建的网站的安全性 在我的网站上,我使用jquery的jTable显示来自MySQL数据库的数据 使用mysql\u real\u escape\u字符串对数据库中新条目的输入进行清理: $fieldName = mysql_real_escape_string($_POST["fieldName"]); (尽管在我的报告中,我建议使用准备好的材料是一个更好的选择,为什么) 使用以下方式显示输出: print json_encod

我需要写一份关于如何防止SQL注入和XSS的报告,以及如何提高我创建的网站的安全性

在我的网站上,我使用jquery的jTable显示来自MySQL数据库的数据

使用mysql\u real\u escape\u字符串对数据库中新条目的输入进行清理:

$fieldName = mysql_real_escape_string($_POST["fieldName"]);
(尽管在我的报告中,我建议使用准备好的材料是一个更好的选择,为什么)

使用以下方式显示输出:

print json_encode($jTableResult);
在测试我的网站时,我意识到,尽管我让SQL注入变得更加困难,但我仍然可以将HTML和javascript代码保存到数据库中,然后在显示到浏览器时执行。由于我不知道如何解决这个问题,我只是在用户输入上添加了strip_tags功能:

$fieldName = mysql_real_escape_string(strip_tags($_POST["fieldName"]));
现在我需要编写这份报告,我想说明应该采用的正确方法,以及我可以改进的地方

所以我的问题是。。。如何在数组中转义输出


希望这有意义

您可以使用htmlspecialchars将html输出为纯文本:

除非指定可以在输出中显示的特定标记,否则条带标记将删除这些标记

Mysql\u real\u escape\u字符串用于对SQL输入的字符进行转义。。

但是,请查看Mysqli或PDO,并准备一些语句来增强您的安全性。
Mysql被抹黑了。

@randomizer我在我网站的另一部分使用了htmlspecialchars,该部分显示了发送给浏览器的电子邮件,因此在我的报告中的某个时候也会提到这一点。但是,你知道htmlspecialchars是否可以用于删除数组中数据的标记吗?不,要删除标记,你必须使用strip_标记,如果要按原样显示html,可以使用htmlspecialchars($text),它将显示为文本而不是html。@randomizer抱歉,我应该重新设置相位。。。您可以使用带有数组的htmlspecialchars来显示html和javascript吗?基本上我想知道的是,像这样的命令是否存在(并且有效):print json_encode(htmlspecialchars($jTableResult));用于输出而不是输入,这是可能的,不是用一个简单的命令,而是看看@randomizer啊,谢谢。只是需要知道这是可以做到的。我现在可以在我的报告中提到这一点,并以该函数为例。我读过的所有参考资料都建议在处理输出而不是输入时最好使用htmlspecialchars,但提供的链接是直接的和可用的。最好直接链接到PHP手册和/或OWASP安全指南。谢谢@Misiur是的,我知道这一点,但我们被告知只使用mysql,或者他们使用旧的任务,或者他们希望我们在我们的报告中提到一些关于这一点的内容,我在建议使用mysql中不可用的准备语句时已经做过了。准备语句非常适合处理SQL注入。我在回答中更新了它,因为它可能与您的作业相关。你绝对应该告诉你的老师,他/她不应该再使用mysql了。然而,我们谈论的是产出,这是另一个问题:)