在Web应用程序.NET中,我必须动态地将html转换为pdf.我玩了一些开源项目.最后我找到了wkhtmltopdf.在服务器端,我的应用程序将调用wkhtmlpdf的服务器端进程并传递参数并向用户显示pdf文件.
从安全角度来看,这种方法有多糟糕?它更容易受到机器人的攻击吗?
假设在给定不可信任的输入时,生成的程序有一些缓冲区溢出错误,导致任意代码运行.好的一面:嘿,任意代码现在在另一个进程中运行,而不是服务器进程.不好的一面是:任意代码现在具有进程拥有的所有权限.
将子系统隔离到他们自己的过程是一个很好的做法,但不要止步于此.深入使用防御.
使用正常运行所需的最少权限启动新进程.这样,如果攻击成功,则造成的伤害有限.
消除对流程的输入,特别是如果它们来自不值得信任的来源.确保文件大小合理且包含合理的数据.
你想要一个成功的攻击必须跳过十几个不可能的箍,而不仅仅是一个.
Joe关于拒绝服务的观点也是一个值得思考的好事.
它容易受到人们淹没你的服务器和DOS的影响.您可以将请求放在消息队列中,然后让服务处理项目脱离队列.这意味着您可以保证最多有N个进程在运行.最糟糕的情况是,你有一个很长的队列,你可以取消.
如果使用消息队列,则可以将队列使用者移动到另一个服务器(或多个服务器)上.如果您对服务有很多需求,这有助于分散服务器负载.在另一个服务上运行也意味着对数据的有限访问,这对安全性有好处,这意味着可执行文件无法访问它不需要的文件和内存.
缺点是这是异步的,您需要通知该文件已准备好下载.在等待下载时,您还需要将其存储在某处.
这样做的好处是用户在等待时不会占用HTTP服务连接,如果运行过程需要很长时间,则用户的连接不会超时.
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |