小编Ste*_*rta的帖子

如何关闭Boto S3的连接?

我正在使用Boto在我的Python程序中连接到Amazon S3.我可以打开连接并将文件上传到存储桶.我认为我应该关闭连接以释放资源,更重要的是,避免任何安全风险,让开放的连接闲置.我以为我应该调用close()方法.但我测试了如下:1.打开连接.2.关闭连接.3.将文件上传到存储桶.

我认为第3步会失败,但上传工作了!那么close()做什么呢?如果它没有真正关闭连接,我应该用什么代替close()?或者只是不必关闭连接?

我在Boto教程,Boto API参考这篇StackOverflow帖子中找到了答案,但到目前为止还没有运气.

谢谢你的帮助.

python security amazon-s3 boto amazon-web-services

23
推荐指数
2
解决办法
2万
查看次数

使用pytest和xdist时如何打印输出

我正在使用py.test来运行测试.我正在使用它与pytest-xdist并行运行测试.我想在我的测试中看到print语句的输出.

我有:Ubuntu 15.10,Python 2.7.10,pytest-2.9.1,pluggy-0.3.1.

这是我的测试文件:

def test_a():
    print 'test_a'


def test_b():
    print 'test_b'
Run Code Online (Sandbox Code Playgroud)

当我运行py.test时,没有打印任何内容.这是预期的:默认情况下,py.test捕获输出.

当我运行py.test -s时,它会打印test_atest_b.

当我运行py.test -s -n2时,再没有打印任何内容.如何在使用-n2时使print语句正常工作?

我已经阅读了pytest + xdist而没有捕获输出和这个错误报告.

pytest xdist

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

如何避免Flask-Admin 2.1警告"UserWarning:规则集中缺少字段"?

我在Python 2.7.6中使用Flask-Admin 2.1.

我的一个Flask-Admin模型类继承自flask.ext.admin.contrib.sqla.ModelView和覆盖form_rules.

当我运行我的应用程序时,会显示以下警告: "UserWarning: Fields missing from ruleset"

警告是准确的:我的模型中有些字段未包含在规则集中.但这是设计的.我不希望在用户创建或编辑此模型的实例时显示这些字段.

我已经读过这个:https://github.com/flask-admin/flask-admin/pull/815#issuecomment-81963865

我怎么能抑制警告?

flask-admin

8
推荐指数
1
解决办法
752
查看次数

Spring MVC - 有没有一种方法可以清理用户输入而不需要在每个 JSP 页面上使用 c:out ?

我正在尝试保护我的 Spring MVC Web 应用程序免受跨站点脚本 (XSS) 攻击。

起初我以为我可以简单地在 web.xml 中设置 defaultHtmlEscape 并完成。但我发现并没有什么效果。如此处所述 - Spring 或 App-Server escape html 无法正常工作 JAVA MVC,defaultHtmlEscape 对输入没有影响。它仅清理 c:out 标记内的输出。

所以我想我应该编写一个过滤器来拦截请求,检查参数,并根据需要清理它们。但是在研究如何编写过滤器时,我遇到了这个 - XSS Filter to enctype="multipart/form-data" forms。它包括建议过滤输入是一个坏主意的评论,并且我应该坚持过滤输出。

有几篇文章提到了 HDIV 和其他第三方安全解决方案,但我不想在我的项目中引入新的第三方依赖项来实现像清理这样的基本功能。

但过滤输出似乎不方便且容易出错。是否所有接触我的 Web 应用程序的开发人员都应该记住对每个 JSP 页面上的每个输出值使用 c:out?全局设置肯定会更好吗?这里的最佳实践是什么?

预先感谢您的建议。

xss spring

7
推荐指数
1
解决办法
8979
查看次数

使用JUnit时可以避免重新定义JNDI数据源吗?

我的Java EE 7应用程序使用Spring,在Tomcat 7上运行.它使用JNDI数据源访问数据库,该数据源由context.xml中的此行定义:

<Resource auth="Container" driverClassName="org.postgresql.Driver" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/leadmanager" password="xxxxxxxx" type="javax.sql.DataSource" url="jdbc:postgresql://localhost:5432/leadmanager" username="postgres"/>
Run Code Online (Sandbox Code Playgroud)

我创建了一些JUnit测试.当我尝试运行它们时(在Eclipse中,通过右键单击测试类并选择Run As | JUnit Test),发生了异常:

javax.persistence.PersistenceException: [PersistenceUnit: leadmanager] Unable to build EntityManagerFactory
...
Caused by: org.hibernate.service.jndi.JndiException: Error parsing JNDI name [java:/comp/env/jdbc/leadmanager]
...
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
...
Run Code Online (Sandbox Code Playgroud)

感谢这篇有用的帖子 - https://blogs.oracle.com/randystuph/entry/injecting_jndi_datasources_for_junit - 我找到了一个解决方案.我把它添加到我的测试类中:

@BeforeClass
public static void setUpClass() throws Exception {

    // create initial context …
Run Code Online (Sandbox Code Playgroud)

junit jndi

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

如何覆盖Flask-Security默认消息?

Flask-Security从Python Flask Web应用程序开发的认证和授权中获取了大量繁重的工作.不过,我遇到了一个问题.

在登录页面上,消息会闪烁以响应各种无效输入.示例包括: - 指定的用户不存在 - 密码无效 - 帐户被禁用

这不符合安全最佳实践.您不应向用户透露他或她的登录尝试被拒绝的详细信息.上述消息使黑客更容易识别有效的用户名.

我想覆盖这些标准的Flask-Security消息,用"无效的用户名或密码"替换它们.但是,我还没有找到一种方便的方法.

这些消息存储在site-packages/flask_security/core.py中的_default_messages中.我可以修改该文件,但这不是一个好的解决方案:如果我重新安装或更新Flask-Security,它将会中断.

我知道我可以自定义Flask-Security的默认视图.但是视图包含有用的代码,例如

{{ render_field_with_errors(login_user_form.email) }}
Run Code Online (Sandbox Code Playgroud)

隐藏登录表单的实现细节.我不想丢弃所有有用的代码并重写大部分内容只是为了更改一些消息.

有没有人知道更好的方法来自定义Flask-Security的登录消息?

python flask flask-security

5
推荐指数
2
解决办法
2914
查看次数