如果我没有写入数据库,我应该如何清理用户输入



我有一个简单的网页,其中有一个文本区域,当输入多行选项卡描绘的文本时,php脚本会处理文本,并将结果字符串输出为文本文件供用户下载。

页面本身不过是一个文本区域和一个向自己发布的提交按钮。如果接收到后数据,它基本上在文本框中创建一个文本行数组(使用explode("n",$text),然后循环遍历每一行,并创建该行中每一段文本的数组(使用explode("t",$text)。最后,它获取数组中的每个元素,并用它构造一个字符串。脚本中唯一使用的其他php函数是date函数和strtotime函数以及几个foreach语句。

字符串完成后,使用几个header()函数(Content-Disposition: attachment;Content-Type:等)将字符串作为文本文件发送到浏览器。因此,假设$str是字符串,它就是这样发送到浏览器的:

header('Content-Disposition: attachment; filename="file.txt"')
header('Content-Type: text/plain'); 
header('Content-Length: ' . strlen($str));
echo $str;
exit();

例如,假设提供的文本是这样的(假设文本之间的空格是制表符)

John    Smith    Freshman
Jane    Doe      Sophomore

然后脚本创建如下字符串:

Student:nfirstname:Johnnlastname:SmithnYear:FreshmannEndStudentnStudent:nfirstname:Janenlastname:DoenYear:SophomorenEndStudentn

该脚本将作为text/plain文件发送到浏览器。

脚本运行良好,输出文件正确。我的问题是,我让自己打开了什么样的安全漏洞,有可能关闭它们吗(以及如何关闭它们)。我希望这个页面是公开的。

由于您从未解释文本,并且执行任何代码以响应文本中的指令,因此这里绝对没有安全问题。

您唯一需要注意的是使用特殊字符:您的输出使用具有特定含义的特定字符,即n。如果你的输入包含一个n,并且你按原样将这个波谷传递给输出,那么你的输出的意义会改变吗?也许您需要转义删除输入中的任何n

相关内容

  • 没有找到相关文章