小编abw*_*abw的帖子

如何正确清理文件名(防止 shell 注入)?

在子进程 (shell=False) 中使用外部源(例如:xml 文件)的文件名之前,通常的做法是什么?

更新:在发送一些解析后的字符串之前,我想进行一些基本的安全检查。给定的示例在远程模式下使用 mpg123(命令行音频播放器)来播放声音文件。

filename = child.find("filename").text # e.g.: filename = "sound.mp3"
pid = subprocess.Popen(["mpg123"],"-R"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
command = "L "+filename+"\n"  
pid.stdin.write(command.encode())
Run Code Online (Sandbox Code Playgroud)

python subprocess sanitization

6
推荐指数
1
解决办法
6248
查看次数

如何使用Linux和Python3读出模拟HID键盘的USB Rfid阅读器

我正在使用一个Rfid Reader(一个小型​​的usb棒),它在Debian Linux(Squeeze)上模仿HID键盘.

在扫描rfid标签的那一刻,-f/dev/input/event2在屏幕上给了我一堆乱码.通过使用evdev Python库(http://bit.ly/kZkO2b),我实际上可以正确解码字符串.

但我想我正在咆哮错误的树.这似乎太复杂了.如果rfid阅读器像HID键盘一样工作,我应该能够通过使用sys.stdin等基本功能来访问它,对吗?那怎么做得好呢?

keyboard debian rfid hid python-3.x

5
推荐指数
1
解决办法
4188
查看次数

如何在读取流时正确终止Python3线程

我正在使用一个线程从流(/ dev/tty1)读取字符串,同时处理主循环中的其他内容.我想在按CTRL-C时Thread与主程序一起终止.

   from threading import Thread

   class myReader(Thread):
      def run(self):
         with open('/dev/tty1', encoding='ascii') as myStream:
            for myString in myStream:
               print(myString)
      def quit(self):
         pass # stop reading, close stream, terminate the thread

   myReader = Reader()
   myReader.start()
   while(True):
      try:
         pass # do lots of stuff
      KeyboardInterrupt:
         myReader.quit()
         raise
Run Code Online (Sandbox Code Playgroud)

通常的解决方案 - run()循环中的布尔变量 - 在这里不起作用.推荐的解决方法是什么?

我可以设置守护进程标志,但之后我将无法使用quit()方法,这可能在以后证明是有价值的(做一些清理).有任何想法吗?

multithreading python-multithreading python-3.x

5
推荐指数
1
解决办法
7465
查看次数