因此,当我在应用程序上运行安全扫描时,我遇到了一个问题。事实证明,我无法防范XXE。这是显示有害代码的简短代码段:
static void Main()
{
string inp = Console.ReadLine();
string xmlStr = ""; //This has a value that is much too long to put into a single post
if (!string.IsNullOrEmpty(inp))
{
xmlStr = inp;
}
XmlDocument xmlDocObj = new XmlDocument {XmlResolver = null};
xmlDocObj.LoadXml(xmlStr);
XmlNodeList measureXmlNodeListObj = xmlDocObj.SelectNodes("REQ/MS/M");
foreach (XmlNode measureXmlNodeObj in measureXmlNodeListObj)
{
XmlNode detailXmlNodeListObj = xmlDocObj.SelectSingleNode("REQ/DTD");
string measureKey = measureXmlNodeObj.Attributes["KY"].Value;
if (detailXmlNodeListObj.Attributes["MKY"].Value ==
measureKey) //Checking if selected MeasureKey is same
{
XmlNode filerNode = measureXmlNodeObj.SelectSingleNode("FS");
if …Run Code Online (Sandbox Code Playgroud) 因此,我正在尝试使用一些简单的代码注入来填充表单并提交它,在大多数情况下,我可以通过触发模糊事件来重新验证文本框,但在反应表单构建的情况下redux,它不会以相同的方式验证。
我尝试使用以下代码,但它不起作用:
top.jQuery('input#last-name-\\[0\\]').val('Smith').attr('value','Smith').trigger('blur');
是否有我应该触发的事件而不是输入事件?
由于在提交时触发单击事件验证失败,因此未检测到这些值,就像表单中未输入任何数据一样。
我尝试了多种触发器,包括 keyup、keydown、keypress、焦点、模糊和更改。
请注意,使用默认值不是一个选项,因为我将表单数据注入到不属于我自己的网站中。
这是 React 用于构建组件的代码:
function LastNameComponent(_ref) {
var index = _ref.index,
isFirstField = _ref.isFirstField,
formatValue = _ref.formatValue;
var minLength = 2;
var maxLength = 80;
return _react2.default.createElement(
'div',
{ className: 'form--item span3' },
_react2.default.createElement(
'label',
{ className: 'search-label small field__icon_group' },
_react2.default.createElement(
'span',
null,
'*'
),
'Last Name',
_react2.default.createElement(_TextInput2.default, {
id: "last-name-[" + index + "]",
model: "searchParams.searches[" + index + "].fields.lastName",
validators: { required: function required(value) {
return !value || value.length < …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试将 ID 列表与数据库实体的子属性相交。
这样做的目的是查找所有列表 Id 与子实体“Location”中至少一个实体相匹配的所有“Form”记录。我相信 SQL 等效项将在连接表“Locations”上执行 IN。
相关元素的结构如下:(我故意省略了所有其他属性)。
public class Form
{
[Column("FormId"), DatabaseGenerated(DatabaseGeneratedOption.Identity), Key]
public Guid Id { get; set; }
public virtual ICollection<Location> Locations { get; set; }
}
public class Location
{
[Column("LocationId"), DatabaseGenerated(DatabaseGeneratedOption.Identity), Key]
public Guid Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试执行以下操作:
var locationIdsL = locationIds.Split(',').Select(Guid.Parse).ToList();
return baseQuery.Include(x => x.Locations).Where(x => x.Locations.Select(y => y.Id).Intersect(locationIdsL).Count() == locationIdsL.Count);
Run Code Online (Sandbox Code Playgroud)
* 假设该locationIdsL变量是一个有效的 Guid 列表。
上面的代码返回以下异常:
System.ArgumentNullException:值不能为空。(参数“参数”)位于 System.Linq.Expressions.Expression.Lambda(表达式主体、字符串名称、布尔型 tailCall、IEnumerable`1 参数)位于 System.Linq.Expressions.Expression.Lambda(表达式主体、ParameterExpression[] 参数)在 Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.ReducingExpressionVisitor.Visit(表达式表达式) 在 System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor 访问者,IArgumentProvider …
c# lambda entity-framework set-intersection entity-framework-core
我正在努力实现以下目标:
得到的所有字段值,其中
FieldValue是大于100时的值被存储为一个数字。
一个值是否存储为数字的指示符由字段类型给出,这是另一个 where 子句。
我面临的问题是,当我尝试在 WHERE 语句中进行数据字段转换时,它失败了。
我跑:
SELECT FieldValue FROM CARData A
JOIN Fields B ON A.FieldId = B.FieldId
WHERE FieldTypeId = 3 AND FieldValue IS NOT NULL
Run Code Online (Sandbox Code Playgroud)
这将返回以下预期结果:
但是,如果我添加了 WHERE 子句以按值过滤:
SELECT FieldValue FROM CARData A
JOIN Fields B ON A.FieldId = B.FieldId
WHERE FieldTypeId = 3 AND FieldValue IS NOT NULL
AND CAST(FieldValue AS BIGINT) > 100
Run Code Online (Sandbox Code Playgroud)
它抛出错误:
将数据类型 nvarchar 转换为 bigint 时出错。
我有点理解问题是什么 - 它试图将表中的所有值转换为 bigint 并且在遇到非数字值时失败。
我试图通过在第二个查询中嵌套第一个查询来解决这个问题,如下所示:
SELECT RESULT.FieldValue FROM …Run Code Online (Sandbox Code Playgroud) c# ×2
casting ×1
events ×1
javascript ×1
jquery ×1
lambda ×1
linq-to-xml ×1
reactjs ×1
redux ×1
sql ×1
sql-server ×1
t-sql ×1
veracode ×1
xml ×1
xxe ×1