我有一个网站,我让用户编辑网站的前端.用户只能访问编辑器,而不能访问其托管的服务器.
用户要求我也允许javascript.这意味着用户可以在前端创建自己的脚本.
我担心的是用户可能会使用它来做恶意的事情.我担心,如果用户知道的东西足够好,他可能会搞砸网站.
我的问题: - 假设用户拥有SQL DB的连接字符串,他是否可以设法在该服务器上执行查询?通常这应该是NO,因为javascript是客户端的权利吗?
我找到了以下代码段:
var connection = new ActiveXObject("ADODB.Connection") ;
var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB";
connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");
rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
document.write(rs.fields(1));
rs.movenext;
}
rs.close;
connection.close;
Run Code Online (Sandbox Code Playgroud)
假设我的连接字符串看起来像
Data Source=(local);Initial Catalog=TestDB;Application Name=TestDB;Integrated Security=True
Run Code Online (Sandbox Code Playgroud)
我试图让脚本运行,但幸运的是它显示了一个空白页面.但这是因为我可能做错了什么?或者它确实是因为javascript是客户端的,并且不会允许做那种东西?
其他问题: - 我采取了哪些其他风险的例子,允许他在前端使用javascript?如果javascript确实是一个完全客户端的语言,那就意味着他不能冒任何其他风险吗?
我有以下查询
SELECT
dtc.coupon_type_company_name,
COUNT(*) * dtc.coupon_type_company_coupon_amount AS 'Total_Coupon_To_Be_Used',
dtc.coupon_type_company_coupon_months_combinable
FROM
[dbo].[coupon_type_Company_User] dtcu
JOIN
coupon_type_Company dtc ON dtcu.coupon_type_Company_ID = dtc.id
JOIN
person p ON dtcu.userID = p.userID
WHERE
coupon_type_company_coupon_is_combinable = 1
OR coupon_type_company_has_coupon = 1
AND dtc.companyID = 1081
AND p.is_active = 1
GROUP BY
dtc.coupon_type_company_name,dtc.coupon_type_company_coupon_amount,
dtc.coupon_type_company_coupon_months_combinable
Run Code Online (Sandbox Code Playgroud)
这将返回以下内容:
然而,我想要的只是一列和一行,应该取中间列 ( count(*)*dtc.coupon_type_company_coupon_amount
)的总和。
我怎样才能做到这一点并防止在我的代码后端(C#)中这样做
我有下表:
用户
我正在尝试获取查询以获取可计费用户,标准是:
我有以下查询:
SELECT * from user u WHERE CompanyID = 1205
AND (p.IsActive = 1 AND MONTH(p.Date_Joined) != MONTH(GETDATE())
OR (p.is_active = 0 AND MONTH(p.Date_Left) = MONTH(GETDATE())
Run Code Online (Sandbox Code Playgroud)
问题是这个查询没有工作,因为它没有检查用户的年份(2017年9月加入的用户不被视为可计费,即使他们应该在2017年加入,而不是今年,这些人在2018年9月创建的人不应被视为可计费.
如何实现年份或优化我的查询?
我有一个包含 DNS .zone 文件的文件夹。
我试图返回所有文件和 IP 地址看起来像172.20.*
.
我使用以下内容:
Get-ChildItem -Recurse -Path 'C:\Root' | Select-String -Pattern '*172.20.*' | group | select name
Run Code Online (Sandbox Code Playgroud)
但这会返回:
Select-String :字符串 *172.20.* 不是有效的正则表达式:解析 "*172.20.*" - 量词 {x,y} 不接任何内容。
我尝试-SimpleMatch
在我的案例中使用这个案例Select-String
但没有成功。将字符串括在双引号中也不起作用。
如果我使用实际文本作为我的模式,它可以毫无问题地工作。
我的问题在哪里?
我有一个脚本,其中包含以下行:
$body += "The file " + $item.Name + " is reaching $MaxSize GB! <br> Current Size: <b>" + $SizeInGb.ToString(".00") + " GB </b> <br />"+ "Path to file: " + $Path + "<br /> <br />"
Run Code Online (Sandbox Code Playgroud)
问题是我的 HTML 没有被渲染/解析(在 Outlook 中)
我的邮件仍然显示为:
The file SRV20150818.VHD.ebxwyq is reaching 2 GB! <br> Current Size: <b>36,64 GB </b> <br />Path to file: \\srv641\Software G\update\ex\SRV565456.VHD.wyq<br /> <br />
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
我用来发送邮件的命令是:
Send-MailMessage -To "test@ds.test" -From "tesbetest@test.test" -Subject $subject -Body $body -SmtpServer 192.168.16.18
Run Code Online (Sandbox Code Playgroud) 我有以下方法将对象设置为特定状态(它将特定行的列值设置为'4':
C#
void setObjectToFour(int objectID)
{
using (var conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString))
using (var command = new SqlCommand("setObjectToFour", conn)
{
CommandType = CommandType.StoredProcedure
})
{
command.Parameters.Add(new SqlParameter("@objectID", SqlDbType.Int)).Value = objectID;
conn.Open();
command.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
SQL:
...
AS
BEGIN
Update [DB_OBJECT].[dbo].[object_table]
SET status = 4
WHERE id = @objectID
END
Run Code Online (Sandbox Code Playgroud)
问题是DB_OBJECT DB不是由我们管理的,而是一个软件的DB.
接下来的问题是上面的查询并不总是有效(而且我们还没弄清楚原因)我正在考虑如果行更新,我们可以"强制"或"检查".
按照以下方式做到这一点是否明智?:
1 - 创建检索对象状态的新C#方法Check
和存储过程getStatus
2 - 我将把上面的两种方法都放在a中,do while
直到状态为4.
这是一个聪明的方法吗?
我有一张桌子:
人
我有这样的记录:
SELECT * FROM Person
1 Test 0123 NULL 0123
2 Test2 NULL 567 789 NULL
3 Test3 0123 NULL NULL 0123
4 Test4 0123 5555 NULL
Run Code Online (Sandbox Code Playgroud)
(结果有NULL但也有EMPTY字符串)
我想要选择所有有效数字(每个可用数字的多个记录):
1 Test 0123
1 Test 0123
2 Test 567
2 Test 789
Run Code Online (Sandbox Code Playgroud)
这可能吗?我选择每个可用值的所有列,并将值存储在最后一列?
我正在尝试创建一个返回DateTime对象的方法.
这个日期应该是上个月的最后一天(月份由我给出).
例:
月: 1月(1)
年份: 2019年
我需要什么: 31/12/2018
这就是我所拥有的
public DateTime getLastDayPrevMonth(int month, int year)
{
DateTime date = new DateTime();
date.Month == month;
date.Year == year;
date.AddMonths(-1);
date.Day = DateTime.DaysInMonth(date.Year,date.Month);
return date;
}
Run Code Online (Sandbox Code Playgroud)
但它返回错误:
只有赋值,调用,递增,递减和新对象表达式才能用作语句
我究竟做错了什么?
我有一个ID的列表.
例:
123
456
789
我想要做的是返回单个字符串中的所有元素,并用'#'分隔它们.
我的结果将是:#123#456#789
我通过执行以下操作尝试了此操作:
//Start with a # at first
seperatedString = "#";
seperatedString = String.Join(" #", list.ToArray());
Run Code Online (Sandbox Code Playgroud)
但我的结果是:123#456#789
为什么我的分隔符不适用于字符串的第一个元素?
我有两张桌子:
[Company]
- CompanyID
- Company_Name
- softID
[User]
- UserID
- CompanyID
- User_Name
Run Code Online (Sandbox Code Playgroud)
在我的后端,我有以下课程:
Company
- CompanyID
- Company Name
- List<User> CompanyUsers
Run Code Online (Sandbox Code Playgroud)
我只是在使用System.Data.SqlClient
.
我的问题是:
如何与用户一起检索公司对象?
我目前在我的数据访问类中有这个方法:
public Company getCompany(int _softID)
{
Company temp = new Company();
conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString);
SqlCommand command = new SqlCommand(@"SELECT * FROM company WHERE softID = @softID", conn);
command.Parameters.Add("@softID", SqlDbType.Int).Value = _softID;
{
conn.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
temp.CompanyID = int.Parse(reader["companyID"].ToString());
temp.companyName = reader["company_name"].ToString();
}
conn.Close();
} …
Run Code Online (Sandbox Code Playgroud) 我有以下代码生成发票行,并包括公司使用它的优惠券的月份:
invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";
Run Code Online (Sandbox Code Playgroud)
我的问题是公司有一种公司语言(在数据库中它保存在值1或2下).
1表示荷兰语,2表示法语.
如何编辑我的行以让月份出现在相应的语言中?
我想我需要从:
if(invoice.CompanyLanguage == 1)
{
invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";
}
else
{
invoice.InvoiceLine += CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month.Month) + " (" + usedThisMonth + "), ";
}
Run Code Online (Sandbox Code Playgroud)
我只找到了创建新CultureInfo
对象的示例,但没有找到如何以编程方式分配它.我的代码需要怎么样?
sql ×6
c# ×5
datetime ×2
join ×2
powershell ×2
sql-server ×2
t-sql ×2
count ×1
cultureinfo ×1
database ×1
date ×1
html-parsing ×1
javascript ×1
list ×1
object ×1
oop ×1
parsing ×1
regex ×1
select ×1
string ×1
sum ×1
verify ×1