我在Codeigniter PHP中构建这个应用程序,我有很多表单和网格。
但是我现在面临的问题对于安全问题非常关键。
当我使用Ajax发布数据时,我通常会尝试在这样的控制器中获取它
$this->input->post('someInputValueName');
但是使用上面的语句,任何人都可以在下面编写脚本,并且该脚本可以保存在数据库中。
<script type="javascript"> alert('Hello World'); </script>
所以当这个数据显示在页面中时,上面的脚本不会显示,而是会被执行??
所以我试过这个
mysql_real_escape_string($this->input->post('someInputValueName');
但是使用上面的mysql方法,\
和"
添加了'
斜杠,因此这是添加到数据库的最终结果,并显示在页面中。< / p>
<script type=\"javascript\"> alert(\'Hello World\'); </script>
Cuz在网格中我开始收到错误,我的网格停止填充cuz jquery认为这是错误。
现在来我的问题,如果用户在数据库中写入输入数据的输入数据应该保存原样(或者其他任何方式都很重要),但是当调用该数据时,怎么可能?要在网格上或页面中显示它应该显示,不应该执行或尝试在页面上执行?
就像在facebook评论中,如果我发布上面的脚本行,它就不会被执行。它只是在评论中显示,没有任何额外的斜杠。
答案 0 :(得分:1)
试试这个功能: http://php.net/manual/de/function.htmlentities.php
看起来适合您的需求
答案 1 :(得分:0)
您可以使用XMP
标记。
因为XMP
忽略HTML标记和实体
所以
<XMP><script type="text/javascript"> alert('Hello World'); </script> aa</XMP>
将准确输出您想要的内容。
<XMP><script type="text/javascript"> alert('Hello World'); </script> aa</XMP>
有关它的更多信息是Here
注意:code
和pre
标记不适用于您的原因。