我的类中有 2 个构造函数:
public class CacheWebServices : ICacheWebService
{
public ICache apiConnector { get; set; }
public CacheWebServices(ICache ApiConnector)
{
apiConnector = ApiConnector;
}
public CacheWebServices()
: this(new VuelingCache())
{ }
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我有一个依赖于 IVuelingCache 的构造函数和一个默认构造函数,该默认构造函数创建一个实例以传递给第一个构造函数。这是对的吗?这样我就摆脱了工厂类。
我有一个应用程序,用户名字段将使用 将任何给定值转换为整数值integer.parseint。该应用程序使用 JSP 和 Oracle 数据库。
该 URL 已经使用 SQLMap 进行了测试,并且它不是动态的。因此,我可以尝试的唯一方法是通过登录表单,但我无法绕过它。
当我输入'或1=1, -- 时,服务器返回错误,error for input string。
我想注入字段,那么如何才能做到呢?
我不知道是否可以使用替代编码,因为无论如何它都会将其转换为整数。
我正在尝试理解依赖注入的概念。下面是我尝试调试的示例。在这里,我创建了 Customer 类,我已将其依赖项注入到他的构造函数中。现在,当我调用this.Iorder.GetOrderDetails();该Index方法时,它给我错误NullReferenceException并要求使用new关键字创建一个对象来调用该方法。当我将此调用this.Iorder.GetOrderDetails();移至另一个方法GetCutomerDetails()并在索引方法中调用该方法时,它起作用了。
问题:我无法理解为什么this.Iorder.GetOrderDetails() 方法调用在方法中不起作用 Index以及为什么它在方法中起作用GetCutomerDetails()
public interface IorderDetails
{
void GetOrderDetails();
}
public class CustomerModel : IorderDetails
{
public void GetOrderDetails() {}
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public class CustomerController: Controller
{
private IorderDetails Iorder;
//DI constructor Injecting OrderDetails object
CustomerController(IorderDetails iorderObj)
{
if (iorderObj == null)
throw new ArgumentNullException("orderObj should not be null");
this.Iorder = iorderObj;
}
//Default constructor
public CustomerController() { }
public ActionResult …Run Code Online (Sandbox Code Playgroud) 我正在将一些核心的角度内容移植到一个新项目中。现在我收到注入器错误,但堆栈跟踪/角度错误页面不显示有问题的注入错误的类名。我得到的只是
\n\nError: $injector:modulerr\nModule Error\nRun Code Online (Sandbox Code Playgroud)\n\n通常那里有一个类名。现在我必须检查每个类(数十个)并手动检查导入。难道就没有更好的办法吗?我在添加类时就看到了这种情况的发生。有时它会显示丢失的注入的名称,有时它只是显示为空白,否则堆栈跟踪会正确识别丢失/错误的注入。
\n\n是否有一些额外的调试模式可以获取此信息?
\n\n完整的(无用的)堆栈跟踪:
\n\nFailed to instantiate module FSApp due to:\nError: [$injector:modulerr] http://errors.angularjs.org/1.2.16/$injector/modulerr?p0=FSApp&p1=Error\xe2\x80\xa6cape%2Fmain%2Fresources%2Flib%2Fangular-1.2.16%2Fangular.min.js%3A32%3A445)\n at Error (native)\n at http://fs/main/resources/lib/angular-1.2.16/angular.min.js:6:450\n at http://fs/main/resources/lib/angular-1.2.16/angular.min.js:33:332\n at Array.forEach (native)\n at q (http://fs/main/resources/lib/angular-1.2.16/angular.min.js:7:280)\n at e (http://fs/main/resources/lib/angular-1.2.16/angular.min.js:32:445)\n at http://fs/main/resources/lib/angular-1.2.16/angular.min.js:33:18\n at Array.forEach (native)\n at q (http://fs/main/resources/lib/angular-1.2.16/angular.min.js:7:280)\n at e (http://fs/main/resources/lib/angular-1.2.16/angular.min.js:32:445\nRun Code Online (Sandbox Code Playgroud)\n\n如果您想尝试重现此情况,请提交您的更改。到处删除几个文件。运行你的角度应用程序。如果删除得足够多,您很快就会收到空白注射器错误。
\n有了深厚的SQL背景后第一次使用firebase。我习惯于使用诸如addslashes()清理用户输入查询之类的功能。
是否有任何标准方法可以使用 Firebase 查找执行类似的操作?
例如:
// expected a key, not a path
var userProvidedKey = "3/malicious"
// will not be a ref to what I expect
var ref = firebase.database().ref(`something/${userProvidedKey}`)
Run Code Online (Sandbox Code Playgroud)
我不知道用户能够在参考中进一步搜索会有多恶意,但也许这个问题已经解决了?或者我需要收到.split('/').shift()我收到的任何信息吗?
注意:我的示例使用 JS SDK。
Create-react-app 在 build 文件夹中创建一个 index.html 文件,我巧妙地将该文件重命名为 index.aspx,(in package.json - "build": "react-scripts build && mv build/index.html build/index.aspx",)因为我需要该应用程序在我们服务器上的模板中运行 - 它确实如此。但是,我目前必须在新的 index.aspx 文件中<%@ Page language="c#" CodeBehind="index_fw2.aspx.cs" AutoEventWireup="false" Inherits="IMod.Web.V2.Index" %>的 之前过去<!doctype html>,以便模板在我们的服务器上呈现。
无论如何,我是否可以让 create-react-app 将其注入到新重命名的 index.aspx 文件中,甚至在构建过程中从 index.html 重命名之前?我到处寻找这方面的参考资料。
反应lazy
const Component = lazy(() => import(`../${element}`));
Run Code Online (Sandbox Code Playgroud)
下一个JSdynamic
const Component = dynamic(() => import(`../${element}`));
Run Code Online (Sandbox Code Playgroud)
这些示例具有相对路径。但是,在我的应用程序中,我还使用元素延迟加载作为导入函数的唯一参数,例如
const Component = lazy(() => import(element));
Run Code Online (Sandbox Code Playgroud)
元素可以被篡改来注入XSS吗?如果是这样,我该如何预防呢?有没有办法对变量进行编码以确保其安全?
我正在关注她所说的文档https://insert-koin.io/docs/reference/koin-android/viewmodel/#viewmodel-and-injection-parameters
唯一的区别是我的视图模型有 2 个同一类 String 的参数(除了 Koin 注入的存储库)。我们称它们为 stringA =“red”和 stringB =“blue”。
当我传递参数时,这些参数的定义明显不同。但是,当实例化视图模型时,我会记录字符串,并且两者的值都是 stringA“red”。
我可以将它们都包装到一个数据类中,但理想情况下我希望将它们分开,知道什么是错误的或应该做什么?
通证模块
val viewModelsModule = module {
viewModel { params ->
MyViewModel(get(), stringA = params.get(), stringB = params.get(), get()) }
}
Run Code Online (Sandbox Code Playgroud)
视图模型注入
val viewModel: MyViewModel = getViewModel(parameters = {parametersOf("red", "blue")})
Run Code Online (Sandbox Code Playgroud)
MyViewModel 内部的参数检查
init {
viewModelScope.launch {
Log.d("TAG", "$stringA $stringB")
}
}
Run Code Online (Sandbox Code Playgroud)
并打印:
red red
Run Code Online (Sandbox Code Playgroud) 我有一个适配器,它扩展ArrayAdapter<T>并想要注入它们LayoutInflater.代码如下所示,但inflater始终如此null
public abstract class MyAdapter<T> extends ArrayAdapter<T> {
@Inject
protected LayoutInflater inflater;
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// inflater here is null
}
}
Run Code Online (Sandbox Code Playgroud) 所以我有一个朋友尝试在我的网站上运行SQLinjection,他设法使用下面的代码进入它.我怎么能阻止这个?我已经阅读了有关清理变量的内容,但我该怎么做?
'; INSERT INTO登录(用户名,密码)VALUES('Gjertsmells','密码'); SELECT'密码'FROM登录WHERE'x'='x
$db = new PDO('mysql:host=XXXXXXXX;dbname=XXXXXXX', 'XXXXXXXXXX', 'XXXXXXXXX');
// query MySQL to verify login
$query = $db->prepare("SELECT password FROM login WHERE username='$username'");
$query->execute();
$column = $query->fetchColumn();
if($column === $password)
Run Code Online (Sandbox Code Playgroud)