2013-05-13 80 views
1

我目前需要开发一个网站,允许用户输入信息和图像到<textarea>然后保存到数据库。这些数据将显示在另一页中。HTML textarea with image upload

我虽然使用AJAX上传文件,然后将<img>附加到<textarea>。但是这种方法会产生SQL注入安全威胁。

所以我需要一个关于如何实现这个的建议,但仍然可以摆脱SQL注入。

+2

建议与其他所有如何防止sql注入相同,也就是使用预处理语句和参数化查询。 – 2013-05-13 07:43:49

+0

这是一个服务器端问题。你在那里使用哪种编程语言? – JJJ 2013-05-13 07:55:07

+0

@Juhana我使用MVC3与C# – 2013-05-13 07:57:34

回答

2

当用户上传的图像,只是下面,你将可以安全地追加图像的HTML textarea的:

  1. 是用户上传有效的JPG/GIF/PNG/X的图像? (使用图像库来验证。)
  2. 将图像重命名为“安全”,如其内容的CRC32 +当前时间(以微秒为单位),以使文件名无害。
  3. 将图像与它的新名称放在可以投放的位置。
1

你会发现你不能使用ajax上传文件 - 你会想找到一个插件。我建议看看https://github.com/blueimp/jQuery-File-Upload/wiki - 虽然它可能有太多的功能。 Theres甚至是一个mvc3的例子! https://github.com/maxpavlov/jQuery-File-Upload.MVC3

上传图片后,我想你可以触发另一个ajax事件来检索图像,然后将其显示在文本区旁边的div中。

就安全问题而言,我被告知允许用户上传文件本质上是不安全的。有关更多详情,请参阅https://github.com/blueimp/jQuery-File-Upload/wiki/Security

我对过多的链接表示歉意。另外,如果您存储很多很少访问的文件,则可能需要考虑将文件保存到磁盘。即。将它们写入网络位置并将文件名存储在表中(使用GUID将文件保存在磁盘上)。

即。 Table UserFileLocations

PK | UserFileName | DiskID

1..n | tree.jpg | // ServerPath/Folder/103c-aa34-0ac2-01cd ...

+0

Nice插件,先生!非常感谢你的帮助。我会试一试 – 2013-05-15 11:59:19