小编Jua*_*ano的帖子

如何保护PHP脚本?

如果我对php脚本进行AJAX调用,就像这样(使用jQuery)

$.ajax(url: "../myscript.php");
Run Code Online (Sandbox Code Playgroud)

并且myscript看起来是这样的:

<?php
    //code that does something to db
 ?>
Run Code Online (Sandbox Code Playgroud)

我想知道如何防止用户只是去example.com/myscript.php来执行脚本.

php security web

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

R 包外的单元测试

很多时候,我们在以下环境中使用 R:我们希望在面对修改时具有可再现性,以及我们拥有复杂的代码库但不包括编写包。似乎 testthat 和其他测试包面向包代码的单元测试,这是有道理的,因为这是最常见的情况,您需要进行大量测试,而您无法完全控制所有数据,但我是想知道在编写包的上下文之外是否有一个好的包或方法在 R 中进行单元测试。

例如,很多时候在包上下文中您正在测试以下形式的内容:

foo <- function(bar){
    # do something to bar
    return(bar.outcome)
}
Run Code Online (Sandbox Code Playgroud)

然后你正在测试函数的预期输出,事情是正确的类型,有正确的错误处理。你这样做的方法是在你的包中创建一个目录用于测试并将它们写在那里,然后 devtools 可以使用load_alltestthat运行它们并产生结果。

我希望能够做的一件事是在包的上下文之外运行这些相同类型的测试,例如在脚本中。这很重要,因为在学术界编写的许多 R 代码并没有在没有相当大的困难的情况下将大量泛化到不同的上下文或数据,因此拥有一个包没有多大意义,但同时单元测试会更容易在未来的包中扩展代码。这是最简单的情况。

更难的情况实际上是您很少在包中做的事情,即测试有关数据的形状、种类和状态的事情。因此,例如,我经常阅读在学术界编写的 R 代码,其中包含以下评论:

data <- data %>% doSomething() #1023 rows 

parameter_df <- // read file 
print(parameter_df) # 5 columns 
data <- data %>% doSomething(param = parameter_df)

lapply(df, class) #should be char, char, char, numeric, Date

Run Code Online (Sandbox Code Playgroud)

我喜欢“每次你想写一个打印语句时,写一个测试”的想法,但实际上我没有一个很好的框架来说明如何在 R 中完成。尤其是在这种更难的情况下不是测试函数,而是测试以确保流经程序的数据是正确的。

这里的上下文是,R 用于许多上下文中,其中脚本的重点是科学意义上的复制,但是人们能够轻松扩展其他脚本(作为复制材料的一部分发布)可能会带来巨大收益对于新项目来说,这要困难得多,尤其是在复杂的代码中,只要没有测试,代码就会非常脆弱,并以非平凡和无声的方式失败。

unit-testing r

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

标签 统计

php ×1

r ×1

security ×1

unit-testing ×1

web ×1