小编sto*_*mux的帖子

解决不能调用next()的后果

我一直在使用Restify一段时间了.我遇到了一些缺乏的代码,next()我发现我不确定我是否完全理解为什么 next()应该被调用res.send().我明白为什么会在中间件情况下使用它,但对于正常的路由,为什么需要它呢?例如:

server.get('/a/:something/',function(req,res,next) {
    res.send('ok');
});
Run Code Online (Sandbox Code Playgroud)

VS

server.get('/b/:something/',function(req,res,next) {
    res.send('ok');
    return next();
});
Run Code Online (Sandbox Code Playgroud)

如果return next();没有代码,它似乎不会导致错误,并从我能看到的东西开始工作.

node.js restify

13
推荐指数
2
解决办法
7022
查看次数

child_process在node.js安全/转义中生成

在节点中,我使用一个模块(GM),发现它使用 spawnchild_process模块传递参数给GraphicMagick的convert可执行文件.

我正在将用户提交的信息传递给GM​​.是否存在安全问题,用户可以使用管道(或其他命令行欺骗)进行某种注入攻击?或者确实spawn可以防范?如果没有,在这种情况下是否有最佳做法可以转义用户提交的值?

security code-injection spawn child-process node.js

10
推荐指数
1
解决办法
2670
查看次数

辅助功能和 HTML 标题标签分隔符 - 垂直线(管道)的替代品

我试图让一个网站对屏幕阅读器更友好,在测试中我注意到屏幕阅读器上的一个常见模式很烦人 - 该网站使用垂直线/管道字符作为<title>标签中的分隔符(例如<title>Page Name | Site Name</title>)。当我使用 VoiceOver 作为屏幕阅读器进行测试时,它被读取为“页面名称垂直行站点名称”,这与站点的特定标题听起来特别奇怪。

对 SEO 没有负面影响的最佳管道替代品是什么?我试过 a<title>Page Name - Site Name</title>并且<title>Page Name &middot; Site Name</title>它们工作正常,但我担心它们可能在某些边缘情况下有问题(例如阅读为“破折号”或“&符号中分号”)或导致 SEO 混乱。是否有公认的最佳实践?

html seo accessibility title

4
推荐指数
1
解决办法
2556
查看次数

如何将切片的每个元素作为单独的参数传递给可变参数C函数?

我正在Rust中构建一个Redis模块。我找到了一些很好的例子,但是在处理与应该接受可变参数的C函数接口时,我陷入了困境。

Redis Module C SDK具有一个名为的函数RedisModule_Call,该函数接受一些特定的参数,然后接受n代表Redis命令的参数。从Redis Module SDK文档(在C中):

RedisModuleCallReply *reply;
reply = RedisModule_Call(ctx,"INCR","sc",argv[1],"10");
Run Code Online (Sandbox Code Playgroud)

RedisModule_Call的前三个参数是特定的,但其余的表示Redis命令,可以轻松地包含数百个参数。

在Rust中,我遵循Redis-Cell中的模式,Redis-Cell是在Rust中成功实现的Redis模块。该模块很棒,但是处理此特定问题的方式非常有限。实际上,它以某种蛮力的方式接受了多达三个参数:

pub fn call(&self, command: &str, args: &[&str]) -> Result<Reply, CellError> {
   // ... code ... 
   let raw_reply = match args.len() {
        1 => raw::call1::call(/* ... */),
        2 => raw::call2::call(/* ... */),
        // ...
Run Code Online (Sandbox Code Playgroud)

这些call1call2函数实际上只是处理不同参数长度的存根:

pub mod call2 {
    use redis::raw;

    pub fn call(
        ctx: *mut raw::RedisModuleCtx,
        cmdname: *const u8,
        fmt: *const …
Run Code Online (Sandbox Code Playgroud)

variadic rust

3
推荐指数
1
解决办法
241
查看次数