Tar*_*sch 6 haskell kerberos system-calls
我正在建立一个网站,用户可以使用kerberos服务登录.虽然,这与我的问题无关.
由于我使用的是kerberos,我想使用系统调用来调用kinit,但我不知道最好的方法.
到目前为止我得到了:
module Kerberos where
system :: String -> IO ExitCode
-- system is loaded through imports
type Username = String
type Password = String
kerberosValidate :: Username -> Password -> IO Bool
kerberosValidate username password = fmap (== ExitSuccess) $
system $ "echo " ++ password ++ " | kinit " ++ username
Run Code Online (Sandbox Code Playgroud)
这样的东西,应该工作得一般.我有三个问题.
username和password字符串.这很重要,因为有一个网站将任何收到的输入传递给此功能.password不应该传递给kinit进程echo password |.是否有一些功能作为参数采用标准?username,username应该作为参数传递.我想rawSystem虽然解决了这个问题.是否有任何系统功能可以帮助我在这里?
使用createProcess和朋友System.Process.
关于安全性的说明:我建议不要通过未经解释的方式传递任何字符串.您可以轻松地为命令编写解析器,从保证安全的解析结果中构建Haskell AST,然后将其呈现给系统命令.这样,您就可以获得针对字符串注入攻击的静态保证,由解析器的类型强制执行.
| 归档时间: |
|
| 查看次数: |
954 次 |
| 最近记录: |